package com.vistatec.ocelot.segment.model;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import com.google.common.collect.Lists;
public class TestBaseSegment {
@Test
public void testMultipleSegmentUpdates() throws Exception {
OcelotSegment seg = newSegment();
SegmentVariant originalTarget = seg.getTarget();
SegmentVariant newTarget1 = new SimpleSegmentVariant("update1");
seg.updateTarget(newTarget1);
assertEquals(newTarget1, seg.getTarget());
assertEquals(originalTarget, seg.getOriginalTarget());
SegmentVariant newTarget2 = new SimpleSegmentVariant("update2");
seg.updateTarget(newTarget2);
assertEquals(newTarget2, seg.getTarget());
// Original target is still the -original- target.
assertEquals(originalTarget, seg.getOriginalTarget());
}
@Test
public void testResetTarget() {
OcelotSegment seg = newSegment();
seg.updateTarget(new SimpleSegmentVariant("update"));
assertTrue(seg.hasOriginalTarget());
assertEquals("update", seg.getTarget().getDisplayText());
assertNotNull(seg.getOriginalTarget());
assertEquals("target", seg.getOriginalTarget().getDisplayText());
seg.resetTarget();
assertEquals("target", seg.getTarget().getDisplayText());
assertTrue(seg.hasOriginalTarget());
assertNotNull(seg.getOriginalTarget());
assertEquals("target", seg.getTarget().getDisplayText());
// Make sure the target diff got reset. XXX This has an ugly
// dependency on the diff language.
assertEquals(Lists.newArrayList("target", "regular"), seg.getTargetDiff());
}
@Test
public void testResetWithNoOriginalTarget() {
OcelotSegment seg = newSegment();
seg.resetTarget();
assertEquals("target", seg.getTarget().getDisplayText());
}
@Test
public void testTargetChangesAffectEditDistance() {
OcelotSegment seg = newSegment();
seg.updateTarget(new SimpleSegmentVariant("targetA"));
assertEquals(1, seg.getEditDistance());
seg.updateTarget(new SimpleSegmentVariant("targetAB"));
assertEquals(2, seg.getEditDistance());
seg.resetTarget();
assertEquals(0, seg.getEditDistance());
}
private static int nextSegmentId = 1;
public static SimpleSegment newSegment() {
int id = nextSegmentId++;
return new SimpleSegment.Builder()
.segmentNumber(id)
.source("source")
.target("target")
.build();
}
}