Index: chrome/test/data/file_manager/unit_tests/progress_center_item_group_unittest.js |
diff --git a/chrome/test/data/file_manager/unit_tests/progress_center_item_group_unittest.js b/chrome/test/data/file_manager/unit_tests/progress_center_item_group_unittest.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..79c1c67b208d22a0a2579f80954733ea865db98a |
--- /dev/null |
+++ b/chrome/test/data/file_manager/unit_tests/progress_center_item_group_unittest.js |
@@ -0,0 +1,498 @@ |
+// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+'use strict'; |
+ |
+/** |
+ * Test target. |
+ * @type {ProgressCenterItemGroup} |
+ */ |
+var group; |
+ |
+/** |
+ * Set up before each test. |
+ */ |
+function setUp() { |
+ // Prepare the string assets. |
+ loadTimeData.data = { |
+ COPY_PROGRESS_SUMMARY: 'Copying...', |
+ ERROR_PROGRESS_SUMMARY: '1 Error.', |
+ ERROR_PROGRESS_SUMMARY_PLURAL: '$1 Errors.' |
+ }; |
+ |
+ // Make the test target. |
+ group = new ProgressCenterItemGroup(); |
+ assertEquals(ProgressCenterItemGroup.State.EMPTY, group.state); |
+} |
+ |
+function testSimpleProgress() { |
+ var item = new ProgressCenterItem(); |
+ item.id = 'test-item-1'; |
+ item.message = 'TestItemMessage1'; |
+ item.state = ProgressItemState.PROGRESSING; |
+ item.progressMax = 1.0; |
+ |
+ // Add an item. |
+ group.update(item); |
+ assertFalse(group.isAnimated(item.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals('TestItemMessage1', group.getItem(item.id).message); |
+ assertEquals('TestItemMessage1', group.getSummarizedItem(0).message); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // Start an animation of the item. |
+ item.progressValue = 0.5; |
+ group.update(item, 0); |
+ assertTrue(group.isAnimated(item.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertEquals(0.5, group.getItem(item.id).progressValue); |
+ assertEquals(0.5, group.getSummarizedItem(0).progressValue); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // Item is completed, but the animation is still on going. |
+ item.progressValue = 1.0; |
+ item.state = ProgressItemState.COMPLETED; |
+ group.update(item, 0); |
+ assertTrue(group.isAnimated(item.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertEquals(100, group.getItem(item.id).progressRateInPercent); |
+ assertEquals(100, group.getSummarizedItem(0).progressRateInPercent); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // The animation of the item is completed. |
+ group.completeItemAnimation(item.id); |
+ assertFalse(group.isAnimated(item.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertEquals(null, group.getItem(item.id)); |
+ assertTrue(!!group.getSummarizedItem(0)); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // The animation of the summarized item is completed. |
+ group.completeSummarizedItemAnimation(); |
+ assertEquals(ProgressCenterItemGroup.State.EMPTY, group.state); |
+} |
+ |
+function testCompleteAnimationDuringProgress() { |
+ var item = new ProgressCenterItem(); |
+ item.id = 'test-item-1'; |
+ item.message = 'TestItemMessage1'; |
+ item.state = ProgressItemState.PROGRESSING; |
+ item.progressMax = 1.0; |
+ |
+ // Add an item. |
+ group.update(item, 0); |
+ assertFalse(group.isAnimated(item.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals('TestItemMessage1', group.getItem(item.id).message); |
+ assertEquals('TestItemMessage1', group.getSummarizedItem(0).message); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // Start an animation of the item. |
+ item.progressValue = 0.5; |
+ group.update(item, 0); |
+ assertTrue(group.isAnimated(item.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertEquals(0.5, group.getItem(item.id).progressValue); |
+ assertEquals(0.5, group.getSummarizedItem(0).progressValue); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // The animation of the item to 50% progress is completed. |
+ group.completeItemAnimation(item.id); |
+ assertFalse(group.isAnimated(item.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertTrue(!!group.getItem(item.id)); |
+ assertTrue(!!group.getSummarizedItem(0)); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // The animation of the summarized item to 50% progress is completed. |
+ group.completeSummarizedItemAnimation(); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertTrue(!!group.getSummarizedItem(0)); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // The item is completed. The animation to 100% progress starts. |
+ item.progressValue = 1.0; |
+ item.state = ProgressItemState.COMPLETED; |
+ group.update(item, 0); |
+ assertTrue(group.isAnimated(item.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertEquals(100, group.getItem(item.id).progressRateInPercent); |
+ assertEquals(100, group.getSummarizedItem(0).progressRateInPercent); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // The animation of the summarized item to 100% progress is completed. |
+ group.completeSummarizedItemAnimation(); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // The animation of the item to 100% progress is completed. |
+ group.completeItemAnimation(item.id); |
+ assertFalse(group.isAnimated(item.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertFalse(!!group.getItem(item.id)); |
+ assertFalse(!!group.getSummarizedItem(0)); |
+ assertEquals(ProgressCenterItemGroup.State.EMPTY, group.state); |
+} |
+ |
+function testAddMaxProgressItem() { |
+ var item = new ProgressCenterItem(); |
+ item.id = 'test-item-1'; |
+ item.message = 'TestItemMessage1'; |
+ item.state = ProgressItemState.PROGRESSING; |
+ item.progressMax = 1.0; |
+ item.progressValue = 1.0; |
+ |
+ // Add an item with 100% progress. |
+ group.update(item, 0); |
+ assertFalse(group.isAnimated(item.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals('TestItemMessage1', group.getItem(item.id).message); |
+ assertEquals('TestItemMessage1', group.getSummarizedItem(0).message); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // Complete the item without animation. |
+ item.progressValue = null; |
+ item.state = ProgressItemState.COMPLETED; |
+ group.update(item, 0); |
+ assertFalse(group.isAnimated(item.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals(null, group.getItem(item.id)); |
+ assertEquals(null, group.getSummarizedItem(0)); |
+ assertEquals(ProgressCenterItemGroup.State.EMPTY, group.state); |
+} |
+ |
+function testCompleteDuringAnimation() { |
+ var item = new ProgressCenterItem(); |
+ item.id = 'test-item-1'; |
+ item.message = 'TestItemMessage1'; |
+ item.state = ProgressItemState.PROGRESSING; |
+ item.progressMax = 1.0; |
+ item.progressValue = 0.0; |
+ |
+ // Add an item. |
+ group.update(item, 0); |
+ assertFalse(group.isAnimated(item.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals('TestItemMessage1', group.getItem(item.id).message); |
+ assertEquals('TestItemMessage1', group.getSummarizedItem(0).message); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // Update the progress of the item to 100%. The animation starts. |
+ item.progressValue = 1.0; |
+ group.update(item, 0); |
+ assertTrue(group.isAnimated(item.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertEquals('TestItemMessage1', group.getItem(item.id).message); |
+ assertEquals('TestItemMessage1', group.getSummarizedItem(0).message); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // Complete the item. The animation is still on going. |
+ item.progressValue = null; |
+ item.state = ProgressItemState.COMPLETED; |
+ group.update(item, 0); |
+ assertTrue(group.isAnimated(item.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertTrue(!!group.getItem(item.id)); |
+ assertTrue(!!group.getSummarizedItem(0)); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+} |
+ |
+function testTwoItems() { |
+ var item1 = new ProgressCenterItem(); |
+ item1.id = 'test-item-1'; |
+ item1.message = 'TestItemMessage1'; |
+ item1.state = ProgressItemState.PROGRESSING; |
+ item1.progressMax = 1.0; |
+ item1.progressValue = 0.0; |
+ item1.type = ProgressItemType.COPY; |
+ |
+ var item2 = new ProgressCenterItem(); |
+ item2.id = 'test-item-2'; |
+ item2.message = 'TestItemMessage2'; |
+ item2.state = ProgressItemState.PROGRESSING; |
+ item2.progressMax = 2.0; |
+ item2.progressValue = 1.0; |
+ item2.type = ProgressItemType.COPY; |
+ |
+ // Item 1 is added. |
+ group.update(item1); |
+ assertFalse(group.isAnimated(item1.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals('TestItemMessage1', group.getItem(item1.id).message); |
+ assertEquals('TestItemMessage1', group.getSummarizedItem(0).message); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // Item 2 is added. |
+ group.update(item2); |
+ assertFalse(group.isAnimated(item1.id)); |
+ assertFalse(group.isAnimated(item2.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertEquals('TestItemMessage1', group.getItem(item1.id).message); |
+ assertEquals('TestItemMessage2', group.getItem(item2.id).message); |
+ assertEquals('Copying...', group.getSummarizedItem(0).message); |
+ assertEquals('Copying... 1 Error.', group.getSummarizedItem(1).message); |
+ assertEquals('Copying... 2 Errors.', group.getSummarizedItem(2).message); |
+ assertEquals(3.0, group.getSummarizedItem(0).progressMax); |
+ assertEquals(1.0, group.getSummarizedItem(0).progressValue); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // Item 1 is completed. |
+ item1.state = ProgressItemState.COMPLETED; |
+ item1.progressValue = 1.0; |
+ group.update(item1); |
+ assertTrue(group.isAnimated(item1.id)); |
+ assertFalse(group.isAnimated(item2.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertEquals('Copying...', group.getSummarizedItem(0).message); |
+ assertEquals(3.0, group.getSummarizedItem(0).progressMax); |
+ assertEquals(2.0, group.getSummarizedItem(0).progressValue); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // Item 1's animation is completed. |
+ group.completeItemAnimation(item1.id); |
+ assertFalse(group.isAnimated(item1.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertEquals('TestItemMessage2', group.getSummarizedItem(0).message); |
+ assertEquals(3.0, group.getSummarizedItem(0).progressMax); |
+ assertEquals(2.0, group.getSummarizedItem(0).progressValue); |
+ assertFalse(!!group.getItem(item1.id)); |
+ assertTrue(!!group.getItem(item2.id)); |
+ |
+ // Item 2 is completed. |
+ item2.state = ProgressItemState.COMPLETED; |
+ item2.progressValue = 2.0; |
+ group.update(item2); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertEquals('TestItemMessage2', group.getSummarizedItem(0).message); |
+ assertEquals(ProgressItemState.COMPLETED, group.getSummarizedItem(0).state); |
+ assertEquals(3.0, group.getSummarizedItem(0).progressMax); |
+ assertEquals(3.0, group.getSummarizedItem(0).progressValue); |
+ assertTrue(!!group.getItem(item2.id)); |
+ |
+ // Item 2's animation is completed. |
+ group.completeItemAnimation(item2.id); |
+ assertFalse(group.isAnimated(item2.id)); |
+ assertFalse(!!group.getItem(item2.id)); |
+ assertEquals(3.0, group.getSummarizedItem(0).progressMax); |
+ assertEquals(3.0, group.getSummarizedItem(0).progressValue); |
+ assertEquals(ProgressItemState.COMPLETED, group.getSummarizedItem(0).state); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // Summarized item's animation is completed. |
+ group.completeSummarizedItemAnimation(); |
+ assertFalse(!!group.getSummarizedItem(0)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals(ProgressCenterItemGroup.State.EMPTY, group.state); |
+} |
+ |
+function testOneItemWithError() { |
+ var item1 = new ProgressCenterItem(); |
+ item1.id = 'test-item-1'; |
+ item1.message = 'TestItemMessage1'; |
+ item1.state = ProgressItemState.PROGRESSING; |
+ item1.progressMax = 1.0; |
+ item1.progressValue = 0.0; |
+ item1.type = ProgressItemType.COPY; |
+ |
+ var item2 = new ProgressCenterItem(); |
+ item2.id = 'test-item-2'; |
+ item2.message = 'TestItemMessage2'; |
+ item2.state = ProgressItemState.PROGRESSING; |
+ item2.progressMax = 2.0; |
+ item2.progressValue = 1.0; |
+ item2.type = ProgressItemType.COPY; |
+ |
+ // Item 1 is added. |
+ group.update(item1); |
+ |
+ // Item 2 is added. |
+ group.update(item2); |
+ |
+ // Item 2 becomes error. |
+ item2.state = ProgressItemState.ERROR; |
+ item2.message = 'Error message.'; |
+ group.update(item2); |
+ assertFalse(group.isAnimated(item1.id)); |
+ assertFalse(group.isAnimated(item2.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals('Copying... 1 Error.', group.getSummarizedItem(0).message); |
+ assertEquals('Copying... 2 Errors.', group.getSummarizedItem(1).message); |
+ assertEquals(1.0, group.getSummarizedItem(0).progressMax); |
+ assertEquals(0.0, group.getSummarizedItem(0).progressValue); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // Item 1 is completed. |
+ item1.state = ProgressItemState.COMPLETED; |
+ item1.progressValue = 1.0; |
+ group.update(item1); |
+ assertTrue(group.isAnimated(item1.id)); |
+ assertFalse(group.isAnimated(item2.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertEquals('Copying... 1 Error.', group.getSummarizedItem(0).message); |
+ assertEquals(1.0, group.getSummarizedItem(0).progressMax); |
+ assertEquals(1.0, group.getSummarizedItem(0).progressValue); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+ |
+ // Item 1's animation is completed. |
+ group.completeItemAnimation(item1.id); |
+ assertFalse(group.isAnimated(item1.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ assertFalse(!!group.getSummarizedItem(0)); |
+ assertEquals('Error message.', |
+ ProgressCenterItemGroup.getSummarizedErrorItem(group).message); |
+ assertEquals('2 Errors.', |
+ ProgressCenterItemGroup.getSummarizedErrorItem( |
+ group, group).message); |
+ assertFalse(!!group.getItem(item1.id)); |
+ assertTrue(!!group.getItem(item2.id)); |
+ |
+ // Summarized item's animation is completed. |
+ group.completeSummarizedItemAnimation(); |
+ assertEquals('Error message.', |
+ ProgressCenterItemGroup.getSummarizedErrorItem(group).message); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals(ProgressCenterItemGroup.State.INACTIVE, group.state); |
+ |
+ // End inactive states. |
+ group.endInactive(); |
+ assertFalse(!!group.getItem(item2.id)); |
+ assertEquals(ProgressCenterItemGroup.State.EMPTY, group.state); |
+} |
+ |
+function testOneItemWithErrorDuringAnimation() { |
+ var item1 = new ProgressCenterItem(); |
+ item1.id = 'test-item-1'; |
+ item1.message = 'TestItemMessage1'; |
+ item1.state = ProgressItemState.PROGRESSING; |
+ item1.progressMax = 1.0; |
+ item1.progressValue = 0.0; |
+ item1.type = ProgressItemType.COPY; |
+ |
+ var item2 = new ProgressCenterItem(); |
+ item2.id = 'test-item-2'; |
+ item2.message = 'TestItemMessage2'; |
+ item2.state = ProgressItemState.PROGRESSING; |
+ item2.progressMax = 2.0; |
+ item2.progressValue = 1.0; |
+ item2.type = ProgressItemType.COPY; |
+ |
+ // Item 1 is added. |
+ group.update(item1); |
+ |
+ // Item 2 is added. |
+ group.update(item2); |
+ |
+ // Item 2 starts an animation. |
+ item2.progressValue = 1.5; |
+ group.update(item2); |
+ assertTrue(group.isAnimated(item2.id)); |
+ assertTrue(group.isSummarizedAnimated()); |
+ |
+ // Item 2 enters the error state. |
+ item2.state = ProgressItemState.ERROR; |
+ item2.message = 'Error message.'; |
+ group.update(item2); |
+ assertFalse(group.isAnimated(item2.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals('Copying... 1 Error.', group.getSummarizedItem(0).message); |
+ assertEquals('Copying... 2 Errors.', group.getSummarizedItem(1).message); |
+ assertEquals(1.0, group.getSummarizedItem(0).progressMax); |
+ assertEquals(0.0, group.getSummarizedItem(0).progressValue); |
+ assertEquals(ProgressCenterItemGroup.State.ACTIVE, group.state); |
+} |
+ |
+function testTwoErrors() { |
+ var item1 = new ProgressCenterItem(); |
+ item1.id = 'test-item-1'; |
+ item1.message = 'Error message 1'; |
+ item1.state = ProgressItemState.ERROR; |
+ item1.type = ProgressItemType.COPY; |
+ |
+ var item2 = new ProgressCenterItem(); |
+ item2.id = 'test-item-2'; |
+ item2.message = 'Error message 2'; |
+ item2.state = ProgressItemState.ERROR; |
+ item2.type = ProgressItemType.COPY; |
+ |
+ // Add an error item. |
+ group.update(item1); |
+ assertFalse(group.isAnimated(item1.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals('Error message 1', |
+ ProgressCenterItemGroup.getSummarizedErrorItem(group).message); |
+ assertEquals(ProgressCenterItemGroup.State.INACTIVE, group.state); |
+ |
+ // Add another error item. |
+ group.update(item2); |
+ assertFalse(!!group.getItem(item1.id)); |
+ assertFalse(group.isAnimated(item2.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals('Error message 2', |
+ ProgressCenterItemGroup.getSummarizedErrorItem(group).message); |
+ assertEquals(ProgressCenterItemGroup.State.INACTIVE, group.state); |
+} |
+ |
+function testCancel() { |
+ var item = new ProgressCenterItem(); |
+ item.id = 'test-item-1'; |
+ item.message = 'TestItemMessage1'; |
+ item.state = ProgressItemState.PROGRESSING; |
+ item.progressMax = 1.0; |
+ item.progressValue = 0.0; |
+ item.type = ProgressItemType.COPY; |
+ |
+ // Add an item. |
+ group.update(item); |
+ |
+ // Start an animation of the item. |
+ item.progressValue = 0.5; |
+ group.update(item); |
+ |
+ // Cancel the item. |
+ item.state = ProgressItemState.CANCELED; |
+ group.update(item); |
+ assertFalse(group.isAnimated(item.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals(null, group.getItem(item.id)); |
+ assertEquals(null, group.getSummarizedItem(0)); |
+ assertEquals(ProgressCenterItemGroup.State.EMPTY, group.state); |
+} |
+ |
+function testCancelWithError() { |
+ var item1 = new ProgressCenterItem(); |
+ item1.id = 'test-item-1'; |
+ item1.message = 'TestItemMessage1'; |
+ item1.state = ProgressItemState.PROGRESSING; |
+ item1.progressMax = 1.0; |
+ item1.progressValue = 0.0; |
+ item1.type = ProgressItemType.COPY; |
+ |
+ var item2 = new ProgressCenterItem(); |
+ item2.id = 'test-item-2'; |
+ item2.message = 'Error message 2'; |
+ item2.state = ProgressItemState.ERROR; |
+ item2.type = ProgressItemType.COPY; |
+ |
+ // Add an item. |
+ group.update(item1); |
+ |
+ // Start an animation of the item. |
+ item1.progressValue = 0.5; |
+ group.update(item1); |
+ |
+ // Add an error item. |
+ group.update(item2); |
+ |
+ // Cancel the item. |
+ item1.state = ProgressItemState.CANCELED; |
+ group.update(item1); |
+ assertFalse(group.isAnimated(item1.id)); |
+ assertFalse(group.isAnimated(item2.id)); |
+ assertFalse(group.isSummarizedAnimated()); |
+ assertEquals(null, group.getItem(item1.id)); |
+ assertTrue(!!group.getItem(item2.id)); |
+ assertEquals(null, group.getSummarizedItem(0)); |
+ assertEquals('Error message 2', |
+ ProgressCenterItemGroup.getSummarizedErrorItem(group).message); |
+ assertEquals(ProgressCenterItemGroup.State.INACTIVE, group.state); |
+} |