entriesInCommon = difference.entriesInCommon().keySet(); assertEquals(set(), onlyOnLeft); assertEquals(set("points"), entriesDiffering); assertEquals(set("points/points.0", "lines", "lines/lines.0", "lines/lines.1"), onlyOnRight); assertEquals(set("points/points.1", "points/points.2"), entriesInCommon); entriesInCommon = difference.entriesInCommon().keySet(); assertEquals(set(), onlyOnLeft); assertEquals(set("lines/lines.0", "points", "points/points.0", "points/points.1", "points/points.2"), onlyOnRight); assertEquals(set("lines"), entriesDiffering); assertEquals(set("lines/lines.1"), entriesInCommon);
@Test public void testPathFilteringDeletedTreeButCommitSingleChange() { leftTree = createHeadTree(// repoTree("roads", "a1", null, 1), // repoTree("highways", "a2", "d1", 2)// ); rightTree = createStageHeadTree(// repoTree("roads", "a1", null, 1) // deleted highways ); MapDifference<String, NodeRef> difference; Set<String> onlyOnNewTree; Set<String> onlyStaged; difference = runWithPathFilter(leftTree, rightTree, "highways/highways.1"); onlyOnNewTree = difference.entriesOnlyOnLeft().keySet(); onlyStaged = difference.entriesOnlyOnRight().keySet(); Set<String> differing = difference.entriesDiffering().keySet(); Set<String> inCommon = difference.entriesInCommon().keySet(); assertEquals(set("roads", "roads/roads.0"), inCommon); assertEquals(set("highways", "highways/highways.0"), onlyOnNewTree); assertEquals(set(), differing); assertEquals(set(), onlyStaged); }
@Test public void testPathFilteringDeletedTreeButCommitSingleChange() { leftTree = createHeadTree(// repoTree("roads", "a1", null, 1), // repoTree("highways", "a2", "d1", 2)// ); rightTree = createStageHeadTree(// repoTree("roads", "a1", null, 1) // deleted highways ); MapDifference<String, NodeRef> difference; Set<String> onlyOnNewTree; Set<String> onlyStaged; difference = runWithPathFilter(leftTree, rightTree, "highways/highways.1"); onlyOnNewTree = difference.entriesOnlyOnLeft().keySet(); onlyStaged = difference.entriesOnlyOnRight().keySet(); Set<String> differing = difference.entriesDiffering().keySet(); Set<String> inCommon = difference.entriesInCommon().keySet(); assertEquals(set("roads", "roads/roads.0"), inCommon); assertEquals(set("highways", "highways/highways.0"), onlyOnNewTree); assertEquals(set(), differing); assertEquals(set(), onlyStaged); }
entriesInCommon = difference.entriesInCommon().keySet(); assertEquals(set(), onlyOnLeft); assertEquals(set("points"), entriesDiffering); assertEquals(set("points/points.0", "lines", "lines/lines.0", "lines/lines.1"), onlyOnRight); assertEquals(set("points/points.1", "points/points.2"), entriesInCommon); entriesInCommon = difference.entriesInCommon().keySet(); assertEquals(set(), onlyOnLeft); assertEquals(set("lines/lines.0", "points", "points/points.0", "points/points.1", "points/points.2"), onlyOnRight); assertEquals(set("lines"), entriesDiffering); assertEquals(set("lines/lines.1"), entriesInCommon);
@Test public void testPathFilteringSingleFeature() { leftTree = createHeadTree(// repoTree("roads", "a1", null, 2), // repoTree("roads/highways", "a2", "d1", 1)// ); rightTree = createStageHeadTree(// repoTree("roads", "a11", null, 1), // deleted 1 feature repoTree("roads/highways", "a21", "d1", 3)// added 2 features ); MapDifference<String, NodeRef> difference; Set<String> onlyOnLeft; Set<String> onlyOnRight; difference = runWithPathFilter(leftTree, rightTree, "roads/roads.1"); onlyOnLeft = difference.entriesOnlyOnLeft().keySet(); onlyOnRight = difference.entriesOnlyOnRight().keySet(); assertEquals(set(), onlyOnLeft); assertEquals(set("roads/highways/highways.1", "roads/highways/highways.2"), onlyOnRight); assertEquals(set("roads/highways/highways.0", "roads/roads.0"), difference.entriesInCommon().keySet()); }
@Test public void testPathFilteringSingleFeature() { leftTree = createHeadTree(// repoTree("roads", "a1", null, 2), // repoTree("roads/highways", "a2", "d1", 1)// ); rightTree = createStageHeadTree(// repoTree("roads", "a11", null, 1), // deleted 1 feature repoTree("roads/highways", "a21", "d1", 3)// added 2 features ); MapDifference<String, NodeRef> difference; Set<String> onlyOnLeft; Set<String> onlyOnRight; difference = runWithPathFilter(leftTree, rightTree, "roads/roads.1"); onlyOnLeft = difference.entriesOnlyOnLeft().keySet(); onlyOnRight = difference.entriesOnlyOnRight().keySet(); assertEquals(set(), onlyOnLeft); assertEquals(set("roads/highways/highways.1", "roads/highways/highways.2"), onlyOnRight); assertEquals(set("roads/highways/highways.0", "roads/roads.0"), difference.entriesInCommon().keySet()); }
Set<String> entriesDiffering = difference.entriesDiffering().keySet(); assertEquals(set("buildings", "buildings/buildings.0", "buildings/buildings.1"), onlyOnLeft); assertEquals(set(), onlyOnRight); assertEquals(set("roads/roads.0", "roads/streets/streets.0", "roads/highways/highways.0", "roads/highways/highways.2", "roads/highways/highways.1"), entriesInCommon); assertEquals(set("roads", "roads/streets", "roads/highways"), entriesDiffering);
Set<String> entriesDiffering = difference.entriesDiffering().keySet(); assertEquals(set("buildings", "buildings/buildings.0", "buildings/buildings.1"), onlyOnLeft); assertEquals(set(), onlyOnRight); assertEquals(set("roads/roads.0", "roads/streets/streets.0", "roads/highways/highways.0", "roads/highways/highways.2", "roads/highways/highways.1"), entriesInCommon); assertEquals(set("roads", "roads/streets", "roads/highways"), entriesDiffering);
@Test public void testMetadataIdChangeOnly() { leftTree = createHeadTree(// repoTree("buildings", EMPTY_ID, null, 0), // repoTree("buildings/stores", "a5", "d3", 5)// old md id is d3 ); rightTree = createStageHeadTree(// indexTree("buildings", EMPTY_ID, null, 0), // indexTree("buildings/stores", "a5", "d31", 5)// new md id is d31 ); ObjectId newRepoRoot = command.call(); assertNotNull(newRepoRoot); // check all blobs have been moved from the index to the object database verifyRepositoryTree(NodeRef.ROOT, newRepoRoot); ImmutableMap<String, NodeRef> refsByPath = getTreeRefsByPath(newRepoRoot); assertEquals(set("buildings", "buildings/stores"), refsByPath.keySet()); assertEquals(id("d31"), refsByPath.get("buildings/stores").getMetadataId()); }
@Test public void testMetadataIdChangeOnly() { leftTree = createHeadTree(// repoTree("buildings", EMPTY_ID, null, 0), // repoTree("buildings/stores", "a5", "d3", 5)// old md id is d3 ); rightTree = createStageHeadTree(// indexTree("buildings", EMPTY_ID, null, 0), // indexTree("buildings/stores", "a5", "d31", 5)// new md id is d31 ); ObjectId newRepoRoot = command.call(); assertNotNull(newRepoRoot); // check all blobs have been moved from the index to the object database verifyRepositoryTree(NodeRef.ROOT, newRepoRoot); ImmutableMap<String, NodeRef> refsByPath = getTreeRefsByPath(newRepoRoot); assertEquals(set("buildings", "buildings/stores"), refsByPath.keySet()); assertEquals(id("d31"), refsByPath.get("buildings/stores").getMetadataId()); }
@Test public void testDeleteAll() { leftTree = createHeadTree(// repoTree("roads", EMPTY_ID, null, 0), // repoTree("roads/highways", "a2", "d1", 10), // repoTree("roads/streets", "a3", "d2", 10), // repoTree("buildings", EMPTY_ID, null, 0), // repoTree("buildings/stores", "a5", "d3", 5), // repoTree("buildings/unknown", "a6", "d4", 5), // repoTree("buildings/towers", "a7", "d5", 5)// ); rightTree = createStageHeadTree(); final ObjectId newRepoRoot = command.call(); assertNotNull(newRepoRoot); ImmutableMap<String, NodeRef> refsByPath = getTreeRefsByPath(newRepoRoot); assertEquals(set(), refsByPath.keySet()); }
@Test public void testSimpleChanges() { leftTree = createHeadTree(// repoTree("roads", "a1", "d1", 1), // repoTree("buildings", EMPTY_ID, null, 0)// ); rightTree = createStageHeadTree(// repoTree("roads", "a11", "d1", 2), // repoTree("buildings", "a41", null, 1)// ); // print(leftTree.getId()); // print(rightTree.getId()); final ObjectId newRepoRoot = command.call(); assertNotNull(newRepoRoot); // check all blobs have been moved from the index to the object database verifyRepositoryTree(NodeRef.ROOT, newRepoRoot); ImmutableMap<String, NodeRef> refsByPath = getRefsByPath(newRepoRoot, true); Set<String> expected = set("roads", "roads/roads.0", "roads/roads.1", "buildings", "buildings/buildings.0"); ImmutableSet<String> actual = refsByPath.keySet(); assertEquals(expected, actual); }
@Test public void testDeleteAll() { leftTree = createHeadTree(// repoTree("roads", EMPTY_ID, null, 0), // repoTree("roads/highways", "a2", "d1", 10), // repoTree("roads/streets", "a3", "d2", 10), // repoTree("buildings", EMPTY_ID, null, 0), // repoTree("buildings/stores", "a5", "d3", 5), // repoTree("buildings/unknown", "a6", "d4", 5), // repoTree("buildings/towers", "a7", "d5", 5)// ); rightTree = createStageHeadTree(); final ObjectId newRepoRoot = command.call(); assertNotNull(newRepoRoot); ImmutableMap<String, NodeRef> refsByPath = getTreeRefsByPath(newRepoRoot); assertEquals(set(), refsByPath.keySet()); }
@Test public void testSimpleChanges() { leftTree = createHeadTree(// repoTree("roads", "a1", "d1", 1), // repoTree("buildings", EMPTY_ID, null, 0)// ); rightTree = createStageHeadTree(// repoTree("roads", "a11", "d1", 2), // repoTree("buildings", "a41", null, 1)// ); // print(leftTree.getId()); // print(rightTree.getId()); final ObjectId newRepoRoot = command.call(); assertNotNull(newRepoRoot); // check all blobs have been moved from the index to the object database verifyRepositoryTree(NodeRef.ROOT, newRepoRoot); ImmutableMap<String, NodeRef> refsByPath = getRefsByPath(newRepoRoot, true); Set<String> expected = set("roads", "roads/roads.0", "roads/roads.1", "buildings", "buildings/buildings.0"); ImmutableSet<String> actual = refsByPath.keySet(); assertEquals(expected, actual); }
@Test public void testNoChanges() { leftTree = createHeadTree(// repoTree("buildings", EMPTY_ID, null, 0), // repoTree("buildings/stores", "a5", "d3", 5), // repoTree("buildings/unknown", "a6", "d4", 5), // repoTree("buildings/towers", "a7", "d5", 5)// ); rightTree = createStageHeadTree(// repoTree("buildings", EMPTY_ID, null, 0), // repoTree("buildings/stores", "a5", "d3", 5), // repoTree("buildings/unknown", "a6", "d4", 5), // repoTree("buildings/towers", "a7", "d5", 5)// ); ObjectId newRepoRoot = command.call(); assertNotNull(newRepoRoot); // check all blobs have been moved from the index to the object database verifyRepositoryTree(NodeRef.ROOT, newRepoRoot); ImmutableMap<String, NodeRef> refsByPath = getTreeRefsByPath(newRepoRoot); assertEquals(4, refsByPath.size()); Set<String> expected = set("buildings", "buildings/stores", "buildings/unknown", "buildings/towers"); assertEquals(expected, refsByPath.keySet()); }
@Test public void testNoChanges() { leftTree = createHeadTree(// repoTree("buildings", EMPTY_ID, null, 0), // repoTree("buildings/stores", "a5", "d3", 5), // repoTree("buildings/unknown", "a6", "d4", 5), // repoTree("buildings/towers", "a7", "d5", 5)// ); rightTree = createStageHeadTree(// repoTree("buildings", EMPTY_ID, null, 0), // repoTree("buildings/stores", "a5", "d3", 5), // repoTree("buildings/unknown", "a6", "d4", 5), // repoTree("buildings/towers", "a7", "d5", 5)// ); ObjectId newRepoRoot = command.call(); assertNotNull(newRepoRoot); // check all blobs have been moved from the index to the object database verifyRepositoryTree(NodeRef.ROOT, newRepoRoot); ImmutableMap<String, NodeRef> refsByPath = getTreeRefsByPath(newRepoRoot); assertEquals(4, refsByPath.size()); Set<String> expected = set("buildings", "buildings/stores", "buildings/unknown", "buildings/towers"); assertEquals(expected, refsByPath.keySet()); }
@Test public void testDeletes() { leftTree = createHeadTree(// repoTree("roads", EMPTY_ID, null, 0), // repoTree("roads/highways", "a2", "d1", 10), // repoTree("roads/streets", "a3", "d2", 10), // repoTree("buildings", EMPTY_ID, null, 0), // repoTree("buildings/stores", "a5", "d3", 5), // repoTree("buildings/unknown", "a6", "d4", 5), // repoTree("buildings/towers", "a7", "d5", 5)// ); rightTree = createStageHeadTree(// indexTree("roads", EMPTY_ID, null, 0), // indexTree("roads/highways", "a2", "d1", 10), // indexTree("buildings", EMPTY_ID, null, 0), // indexTree("buildings/stores", "a5", "d31", 5)// ); final ObjectId newRepoRoot = command.call(); assertNotNull(newRepoRoot); // check all blobs have been moved from the index to the object database verifyRepositoryTree(NodeRef.ROOT, newRepoRoot); ImmutableMap<String, NodeRef> refsByPath = getTreeRefsByPath(newRepoRoot); assertEquals(set("roads", "roads/highways", "buildings", "buildings/stores"), refsByPath.keySet()); }
@Test public void testDeletes() { leftTree = createHeadTree(// repoTree("roads", EMPTY_ID, null, 0), // repoTree("roads/highways", "a2", "d1", 10), // repoTree("roads/streets", "a3", "d2", 10), // repoTree("buildings", EMPTY_ID, null, 0), // repoTree("buildings/stores", "a5", "d3", 5), // repoTree("buildings/unknown", "a6", "d4", 5), // repoTree("buildings/towers", "a7", "d5", 5)// ); rightTree = createStageHeadTree(// indexTree("roads", EMPTY_ID, null, 0), // indexTree("roads/highways", "a2", "d1", 10), // indexTree("buildings", EMPTY_ID, null, 0), // indexTree("buildings/stores", "a5", "d31", 5)// ); final ObjectId newRepoRoot = command.call(); assertNotNull(newRepoRoot); // check all blobs have been moved from the index to the object database verifyRepositoryTree(NodeRef.ROOT, newRepoRoot); ImmutableMap<String, NodeRef> refsByPath = getTreeRefsByPath(newRepoRoot); assertEquals(set("roads", "roads/highways", "buildings", "buildings/stores"), refsByPath.keySet()); }
@Test public void testNestedChanges() { leftTree = createHeadTree(// repoTree("roads", EMPTY_ID, null, 0), // repoTree("roads/highways", EMPTY_ID, "d1", 0), // repoTree("roads/streets", "a3", "d2", 1), // repoTree("buildings", EMPTY_ID, null, 0), // repoTree("buildings/stores", EMPTY_ID, "d3", 0), // repoTree("buildings/unknown", "a6", "d4", 1)// ); rightTree = createStageHeadTree(// indexTree("roads", EMPTY_ID, null, 0), // indexTree("roads/highways", "a21", "d1", 1), // 1 added indexTree("roads/streets", EMPTY_ID, "d2", 0), // 1 removed indexTree("buildings", EMPTY_ID, null, 0), // indexTree("buildings/stores", "a51", "d3", 2), // 2 added indexTree("buildings/unknown", "a6", "d4", 1)// not changed ); final ObjectId newRepoRoot = command.call(); assertNotNull(newRepoRoot); // check all blobs have been moved from the index to the object database verifyRepositoryTree(NodeRef.ROOT, newRepoRoot); ImmutableMap<String, NodeRef> refsByPath = getRefsByPath(newRepoRoot, true); Set<String> expected = set("roads", "roads/highways", "roads/highways/highways.0", "roads/streets", "buildings", "buildings/stores", "buildings/stores/stores.0", "buildings/stores/stores.1", "buildings/unknown", "buildings/unknown/unknown.0"); ImmutableSet<String> actual = refsByPath.keySet(); assertEquals(expected, actual); }
@Test public void testNestedChanges() { leftTree = createHeadTree(// repoTree("roads", EMPTY_ID, null, 0), // repoTree("roads/highways", EMPTY_ID, "d1", 0), // repoTree("roads/streets", "a3", "d2", 1), // repoTree("buildings", EMPTY_ID, null, 0), // repoTree("buildings/stores", EMPTY_ID, "d3", 0), // repoTree("buildings/unknown", "a6", "d4", 1)// ); rightTree = createStageHeadTree(// indexTree("roads", EMPTY_ID, null, 0), // indexTree("roads/highways", "a21", "d1", 1), // 1 added indexTree("roads/streets", EMPTY_ID, "d2", 0), // 1 removed indexTree("buildings", EMPTY_ID, null, 0), // indexTree("buildings/stores", "a51", "d3", 2), // 2 added indexTree("buildings/unknown", "a6", "d4", 1)// not changed ); final ObjectId newRepoRoot = command.call(); assertNotNull(newRepoRoot); // check all blobs have been moved from the index to the object database verifyRepositoryTree(NodeRef.ROOT, newRepoRoot); ImmutableMap<String, NodeRef> refsByPath = getRefsByPath(newRepoRoot, true); Set<String> expected = set("roads", "roads/highways", "roads/highways/highways.0", "roads/streets", "buildings", "buildings/stores", "buildings/stores/stores.0", "buildings/stores/stores.1", "buildings/unknown", "buildings/unknown/unknown.0"); ImmutableSet<String> actual = refsByPath.keySet(); assertEquals(expected, actual); }