package snapshoot;
import com.dx168.fastdex.build.snapshoot.api.DiffInfo;
import com.dx168.fastdex.build.snapshoot.api.DiffResultSet;
import com.dx168.fastdex.build.snapshoot.api.Node;
import com.dx168.fastdex.build.snapshoot.api.Status;
import com.dx168.fastdex.build.snapshoot.string.StringDiffInfo;
import com.dx168.fastdex.build.snapshoot.string.StringNode;
import com.dx168.fastdex.build.snapshoot.string.StringSnapshoot;
import junit.framework.TestCase;
import org.junit.Test;
import java.util.*;
/**
* Created by tong on 17/3/31.
*/
public class StringSnapshootTest extends TestCase {
@Test
public void testCreate() throws Throwable {
Set<String> nodeSet = new HashSet<>();
nodeSet.add("a");
nodeSet.add("b");
nodeSet.add("c");
StringSnapshoot snapshoot1 = new StringSnapshoot(nodeSet);
Collection<Node> collection = (Collection) snapshoot1.nodes;
assertEquals(collection.size(),nodeSet.size());
Set<String> strings = new HashSet<>();
for (Node node : collection) {
strings.add(node.getUniqueKey());
}
assertEquals(strings,nodeSet);
}
@Test
public void testEqual() throws Throwable {
Set<String> nodeSet = new HashSet<>();
nodeSet.add("/Users/tong/Projects/fastdex/DevSample/app/src/main/java");
nodeSet.add("/Users/tong/Projects/fastdex/DevSample/app/src/main/java1");
nodeSet.add("/Users/tong/Projects/fastdex/DevSample/app/src/main/java2");
StringSnapshoot snapshoot1 = new StringSnapshoot(nodeSet);
StringSnapshoot snapshoot2 = new StringSnapshoot(nodeSet);
DiffResultSet resultSet = snapshoot1.diff(snapshoot2);
assertTrue(resultSet.getAllChangedDiffInfos() == null || resultSet.getAllChangedDiffInfos().isEmpty());
}
@Test
public void testEqual2() throws Throwable {
Collection<Node> nodes1 = new HashSet<>();
nodes1.add(StringNode.create("/Users/tong/Projects/fastdex/DevSample/app/src/main/java"));
Collection<Node> nodes2 = new HashSet<>();
nodes2.add(StringNode.create("/Users/tong/Projects/fastdex/DevSample/app/src/main/java"));
Set<Node> increasedNodes = new HashSet<>();
increasedNodes.addAll(nodes1);
increasedNodes.removeAll(nodes2);
System.out.println(increasedNodes);
assertTrue(increasedNodes.isEmpty());
}
@Test
public void testAdd() throws Throwable {
Set<String> nodeSet = new HashSet<>();
nodeSet.add("a");
nodeSet.add("b");
nodeSet.add("c");
StringSnapshoot now = new StringSnapshoot(nodeSet);
Set<String> nodeSet2 = new HashSet<>();
nodeSet2.add("a");
nodeSet2.add("b");
StringSnapshoot old = new StringSnapshoot(nodeSet2);
DiffResultSet<StringDiffInfo> resultSet = now.diff(old);
assertEquals(resultSet.getAllChangedDiffInfos().size(),1);
ArrayList<DiffInfo> ss = new ArrayList<>();
ss.addAll(resultSet.getAllChangedDiffInfos());
DiffInfo diffInfo = ss.get(0);
assertEquals(diffInfo.status, Status.ADDED);
assertEquals(diffInfo.uniqueKey, "c");
}
@Test
public void testDelete() throws Throwable {
Set<String> nodeSet = new HashSet<>();
nodeSet.add("a");
nodeSet.add("b");
StringSnapshoot now = new StringSnapshoot(nodeSet);
Set<String> nodeSet2 = new HashSet<>();
nodeSet2.add("a");
nodeSet2.add("b");
nodeSet2.add("c");
StringSnapshoot old = new StringSnapshoot(nodeSet2);
DiffResultSet<StringDiffInfo> resultSet = now.diff(old);
assertEquals(resultSet.getAllChangedDiffInfos().size(),1);
ArrayList<DiffInfo> ss = new ArrayList<>();
ss.addAll(resultSet.getAllChangedDiffInfos());
DiffInfo diffInfo = ss.get(0);
assertEquals(diffInfo.status, Status.DELETEED);
assertEquals(diffInfo.uniqueKey, "c");
}
}