blob: 96382d20e55ebca13d3ff7660bb7fc8b6a876715 [file] [log] [blame]
/*
* Copyright 2000-2009 JetBrains s.r.o.
*
* 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.intellij.history.core.changes;
import com.intellij.history.core.tree.RootEntry;
import org.junit.Test;
import java.util.List;
public class ChangeListTest extends ChangeListTestCase {
@Test
public void testRevertionUpToInclusively() {
addChangeSet(facade, "1", createFile(r, "file1"));
addChangeSet(facade, "2", createFile(r, "file2"));
RootEntry copy = r.copy();
facade.revertUpTo(copy, "", facade.getChangeListInTests().getChangesInTests().get(0), null, true, true);
assertTrue(copy.hasEntry("file1"));
assertFalse(copy.hasEntry("file2"));
copy = r.copy();
facade.revertUpTo(copy, "", facade.getChangeListInTests().getChangesInTests().get(1), null, true, true);
assertFalse(copy.hasEntry("file1"));
assertFalse(copy.hasEntry("file2"));
}
@Test
public void testRevertionUpToExclusively() {
addChangeSet(facade, "1", createFile(r, "file1"));
addChangeSet(facade, "2", createFile(r, "file2"));
RootEntry copy = r.copy();
facade.revertUpTo(copy, "", facade.getChangeListInTests().getChangesInTests().get(0), null, false, true);
assertTrue(copy.hasEntry("file1"));
assertTrue(copy.hasEntry("file2"));
copy = r.copy();
facade.revertUpTo(copy, "", facade.getChangeListInTests().getChangesInTests().get(1), null, false, true);
assertTrue(copy.hasEntry("file1"));
assertFalse(copy.hasEntry("file2"));
}
@Test
public void testRevertionUpToWithTrackingPath() {
add(facade, createFile(r, "file1"));
add(facade, createFile(r, "file2"));
add(facade, rename(r, "file2", "file3"));
RootEntry copy = r.copy();
assertEquals("file3", facade.revertUpTo(copy, "file3", facade.getChangeListInTests().getChangesInTests().get(0), null, false, true));
assertTrue(copy.hasEntry("file1"));
assertFalse(copy.hasEntry("file2"));
assertTrue(copy.hasEntry("file3"));
copy = r.copy();
assertEquals("file2", facade.revertUpTo(copy, "file3", facade.getChangeListInTests().getChangesInTests().get(1), null, false, true));
assertTrue(copy.hasEntry("file1"));
assertTrue(copy.hasEntry("file2"));
assertFalse(copy.hasEntry("file3"));
copy = r.copy();
assertEquals("file2", facade.revertUpTo(copy, "file3", facade.getChangeListInTests().getChangesInTests().get(1), null, true, true));
assertTrue(copy.hasEntry("file1"));
assertFalse(copy.hasEntry("file2"));
assertFalse(copy.hasEntry("file3"));
}
@Test
public void testRevertionUpToWithTrackingPathWithDeletionAndMovements() {
add(facade, createDirectory(r, "root"));
add(facade, createDirectory(r, "root/dir1"));
add(facade, rename(r, "root/dir1", "dir2"));
add(facade, delete(r, "root/dir2"));
add(facade, createDirectory(r, "root/dir2"));
add(facade, rename(r, "root", "root2"));
RootEntry copy = r.copy();
assertEquals("root/dir2", facade.revertUpTo(copy, "root2/dir2", facade.getChangeListInTests().getChangesInTests().get(3), null, false,
true));
assertTrue(copy.hasEntry("root/dir2"));
assertFalse(copy.hasEntry("root/dir1"));
assertFalse(copy.hasEntry("root1"));
copy = r.copy();
assertEquals("root/dir1", facade.revertUpTo(copy, "root2/dir2", facade.getChangeListInTests().getChangesInTests().get(3), null, true,
true));
assertTrue(copy.hasEntry("root/dir1"));
assertFalse(copy.hasEntry("root/dir2"));
assertFalse(copy.hasEntry("root1"));
}
@Test
public void testChangeSet() {
facade.beginChangeSet();
StructuralChange c1 = add(facade, createFile(r, "f1"));
StructuralChange c2 = add(facade, createFile(r, "f2"));
facade.endChangeSet("changeSet");
List<ChangeSet> cc = facade.getChangeListInTests().getChangesInTests();
assertEquals(1, cc.size());
assertEquals("changeSet", cc.get(0).getName());
assertEquals(ChangeSet.class, cc.get(0).getClass());
assertEquals(array(c1, c2), cc.get(0).getChanges());
}
@Test
public void testForcesBegin() throws Exception {
facade.beginChangeSet();
add(facade, createFile(r, "f1"));
facade.beginChangeSet();
add(facade, createFile(r, "f2"));
facade.forceBeginChangeSet();
add(facade, createFile(r, "f3"));
facade.endChangeSet("a");
add(facade, createFile(r, "f4"));
facade.endChangeSet("b");
add(facade, createFile(r, "f5"));
facade.endChangeSet("c");
List<ChangeSet> cc = facade.getChangeListInTests().getChangesInTests();
assertEquals(2, cc.size());
assertEquals("c", cc.get(0).getName());
assertEquals(3, cc.get(0).getChanges().size());
assertEquals(null, cc.get(1).getName());
assertEquals(2, cc.get(1).getChanges().size());
}
@Test
public void testChangeSetTimestamp() {
setCurrentTimestamp(123);
facade.beginChangeSet();
add(facade, createFile(r, "f"));
setCurrentTimestamp(456);
facade.endChangeSet(null);
assertEquals(123, facade.getChangeListInTests().getChangesInTests().get(0).getTimestamp());
}
@Test
public void testSkippingEmptyChangeSets() {
facade.beginChangeSet();
facade.endChangeSet(null);
assertTrue(facade.getChangeListInTests().getChangesInTests().isEmpty());
}
@Test
public void testSkippingInnerChangeSets() {
facade.beginChangeSet();
Change c1 = add(facade, createFile(r, "f1"));
facade.beginChangeSet();
Change c2 = add(facade, createFile(r, "f2"));
facade.endChangeSet("inner");
facade.endChangeSet("outer");
List<ChangeSet> cc = facade.getChangeListInTests().getChangesInTests();
assertEquals(1, cc.size());
assertEquals("outer", cc.get(0).getName());
assertEquals(ChangeSet.class, cc.get(0).getClass());
assertEquals(array(c1, c2), cc.get(0).getChanges());
}
}