blob: 8b97c3dffcb4e0d6e4dbcf21a15574785e580299 [file] [log] [blame]
/*
* Copyright 2000-2010 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.integration.ui;
import com.intellij.history.core.revisions.Revision;
import com.intellij.history.integration.IntegrationTestCase;
import com.intellij.history.integration.revertion.Reverter;
import com.intellij.history.integration.ui.models.HistoryDialogModel;
import com.intellij.history.integration.ui.models.RevisionItem;
import com.intellij.openapi.vfs.VirtualFile;
import org.junit.Test;
import java.io.IOException;
import java.util.List;
public class HistoryDialogModelTest extends IntegrationTestCase {
HistoryDialogModel m;
VirtualFile f;
@Override
protected void setUpInWriteAction() throws Exception {
super.setUpInWriteAction();
getVcs().beginChangeSet();
f = createFile("f.txt", "1");
getVcs().endChangeSet("1");
getVcs().beginChangeSet();
setContent(f, "2.txt");
getVcs().endChangeSet("2");
getVcs().beginChangeSet();
setContent(f, "3.txt");
getVcs().endChangeSet("3");
initModelFor();
}
@Test
public void testRevisionsList() {
List<RevisionItem> rr = m.getRevisions();
assertEquals(3, rr.size());
assertEquals("3", rr.get(0).revision.getChangeSetName());
assertEquals("2", rr.get(1).revision.getChangeSetName());
assertEquals("1", rr.get(2).revision.getChangeSetName());
}
@Test
public void testDoesNotRecomputeRevisionsEveryTime() throws IOException {
assertEquals(3, m.getRevisions().size());
setContent(f, "xxx");
assertEquals(3, m.getRevisions().size());
}
@Test
public void testRegisteringUnsavedDocumentsBeforeBuildingRevisionsList() {
setDocumentTextFor(f, "unsaved");
initModelFor();
m.getRevisions();
List<Revision> rr = getRevisionsFor(f);
assertEquals(5, rr.size());
assertContent("unsaved", rr.get(0).findEntry());
}
@Test
public void testSelectingLastRevisionByDefault() {
String leftChangeName = "3";
String rightChangeName = "3";
assertSelectedRevisins(leftChangeName, rightChangeName);
}
@Test
public void testSelectingOnlyOneRevisionSetsRightToLastOne() {
m.selectRevisions(0, 0);
assertSelectedRevisins("3", null);
m.selectRevisions(1, 1);
assertSelectedRevisins("2", null);
}
@Test
public void testSelectingTwoRevisions() {
m.selectRevisions(0, 1);
assertSelectedRevisins("2", "3");
m.selectRevisions(1, 2);
assertSelectedRevisins("1", "2");
}
@Test
public void testClearingSelectionSetsRevisionsToLastOnes() {
m.selectRevisions(-1, -1);
assertSelectedRevisins("3", null);
}
@Test
public void testIsCurrentRevisionSelected() {
m.selectRevisions(1, 2);
assertFalse(m.isCurrentRevisionSelected());
m.selectRevisions(2, 2);
assertTrue(m.isCurrentRevisionSelected());
m.selectRevisions(-1, -1);
assertTrue(m.isCurrentRevisionSelected());
}
@Test
public void testIsRevertEnabledForRevision() {
m.selectRevisions(1, 1);
assertTrue(m.isRevertEnabled());
m.selectRevisions(1, 2);
assertTrue(m.isRevertEnabled());
m.selectRevisions(2, 2);
assertTrue(m.isRevertEnabled());
m.selectRevisions(0, 1);
assertTrue(m.isRevertEnabled());
m.selectRevisions(0, 0);
assertTrue(m.isRevertEnabled());
m.selectRevisions(-1, -1);
assertTrue(m.isRevertEnabled());
}
@Test
public void testIsCreatePatchEnabledForRevision() {
m.selectRevisions(1, 1);
assertTrue(m.isCreatePatchEnabled());
m.selectRevisions(2, 2);
assertTrue(m.isCreatePatchEnabled());
m.selectRevisions(1, 2);
assertTrue(m.isCreatePatchEnabled());
m.selectRevisions(0, 1);
assertTrue(m.isRevertEnabled());
m.selectRevisions(0, 0);
assertTrue(m.isCreatePatchEnabled());
m.selectRevisions(-1, -1);
assertTrue(m.isCreatePatchEnabled());
}
private void initModelFor() {
m = new HistoryDialogModel(myProject, myGateway, getVcs(), f) {
@Override
public Reverter createReverter() {
throw new UnsupportedOperationException();
}
};
}
private void assertSelectedRevisins(String leftChangeName, String rightChangeName) {
assertEquals(leftChangeName, m.getLeftRevision().getChangeSetName());
assertEquals(rightChangeName, m.getRightRevision().getChangeSetName());
}
}