// Copyright 2012 Google Inc. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.collide.client.workspace; import com.google.collide.dto.DirInfo; import com.google.collide.dto.FileInfo; import com.google.collide.dto.TreeNodeInfo; import com.google.collide.dto.client.DtoClientImpls.DirInfoImpl; import com.google.collide.dto.client.DtoClientImpls.FileInfoImpl; import com.google.collide.json.client.JsoArray; import com.google.gwt.junit.client.GWTTestCase; /** * Test cases for {@link FileTreeNodeMoveController} * */ public class FileTreeNodeMoveControllerTest extends GWTTestCase { @Override public String getModuleName() { return TestUtils.BUILD_MODULE_NAME; } private FileTreeNode createFileNode(String name) { return FileInfoImpl.make().setName(name).setNodeType(TreeNodeInfo.FILE_TYPE).cast(); } private FileTreeNode createFolderNode(String name) { JsoArray<FileInfo> files = JsoArray.create(); JsoArray<DirInfo> subDirs = JsoArray.create(); return DirInfoImpl.make() .setFiles(files) .setSubDirectories(subDirs) .setName(name) .setNodeType(TreeNodeInfo.DIR_TYPE) .cast(); } public void testIsMoveAllowed() { // d1 // --d2 // -----d3 // ---------f1.js // ---------f2.js // --d4 // -----f3.js // d5 // --f4.js // f5.js FileTreeNode f1 = createFileNode("f1.js"); FileTreeNode f2 = createFileNode("f2.js"); FileTreeNode f3 = createFileNode("f3.js"); FileTreeNode f4 = createFileNode("f4.js"); FileTreeNode f5 = createFileNode("f5.js"); FileTreeNode d3 = createFolderNode("d3"); d3.addChild(f1); d3.addChild(f2); FileTreeNode d2 = createFolderNode("d2"); d2.addChild(d3); FileTreeNode d4 = createFolderNode("d4"); d4.addChild(f3); FileTreeNode d1 = createFolderNode("d1"); d1.addChild(d2); d1.addChild(d4); FileTreeNode d5 = createFolderNode("d5"); d5.addChild(f4); FileTreeNode root = createFolderNode(""); root.addChild(d1); root.addChild(d5); root.addChild(f5); FileTreeNodeMoveController moveController = new FileTreeNodeMoveController(null, null, null); JsoArray<FileTreeNode> nodesToMove = JsoArray.create(); // Try to move "f1.js". nodesToMove.add(f1); moveController.setNodesToMove(nodesToMove); assertFalse(moveController.isMoveAllowed(d3)); assertTrue(moveController.isMoveAllowed(d1)); assertTrue(moveController.isMoveAllowed(d2)); assertTrue(moveController.isMoveAllowed(d4)); assertTrue(moveController.isMoveAllowed(d5)); assertTrue(moveController.isMoveAllowed(root)); // Try to move "f5.js" nodesToMove.clear(); nodesToMove.add(f5); moveController.setNodesToMove(nodesToMove); assertFalse(moveController.isMoveAllowed(root)); assertTrue(moveController.isMoveAllowed(d1)); assertTrue(moveController.isMoveAllowed(d2)); assertTrue(moveController.isMoveAllowed(d3)); assertTrue(moveController.isMoveAllowed(d4)); assertTrue(moveController.isMoveAllowed(d5)); // Try to move "d3" nodesToMove.clear(); nodesToMove.add(d3); moveController.setNodesToMove(nodesToMove); assertFalse(moveController.isMoveAllowed(d3)); assertFalse(moveController.isMoveAllowed(d2)); assertTrue(moveController.isMoveAllowed(d1)); assertTrue(moveController.isMoveAllowed(d4)); assertTrue(moveController.isMoveAllowed(d5)); assertTrue(moveController.isMoveAllowed(root)); // Try to move "d2" nodesToMove.clear(); nodesToMove.add(d2); moveController.setNodesToMove(nodesToMove); assertFalse(moveController.isMoveAllowed(d1)); assertFalse(moveController.isMoveAllowed(d2)); assertFalse(moveController.isMoveAllowed(d3)); assertTrue(moveController.isMoveAllowed(d4)); assertTrue(moveController.isMoveAllowed(d5)); assertTrue(moveController.isMoveAllowed(root)); // Try to move "d1" nodesToMove.clear(); nodesToMove.add(d1); moveController.setNodesToMove(nodesToMove); assertFalse(moveController.isMoveAllowed(root)); assertFalse(moveController.isMoveAllowed(d1)); assertFalse(moveController.isMoveAllowed(d2)); assertFalse(moveController.isMoveAllowed(d3)); assertFalse(moveController.isMoveAllowed(d4)); assertTrue(moveController.isMoveAllowed(d5)); } }