package jetbrains.mps.make.unittest;
/*Generated by MPS */
import org.junit.runner.RunWith;
import org.jmock.integration.junit4.JMock;
import org.junit.Test;
import jetbrains.mps.internal.make.runtime.script.TargetRange;
import jetbrains.mps.make.facet.ITarget;
import org.jmock.Expectations;
import jetbrains.mps.internal.collections.runtime.Sequence;
import junit.framework.Assert;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import java.util.ArrayList;
@RunWith(JMock.class)
public class Targets_Test extends MockTestCase {
@Test
public void test_extended() throws Exception {
TargetRange tr = new TargetRange();
final ITarget foo = Mockups.target(context, "foo");
context.checking(new Expectations() {
{
atLeast(1).of(foo).before();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("bar")})));
}
});
Mockups.allowing(context, foo);
tr.addTarget(foo);
Assert.assertTrue(tr.hasTarget(new ITarget.Name("foo")));
final ITarget foo2 = Mockups.target(context, "foo2", new ITarget.Name("foo"));
context.checking(new Expectations() {
{
atLeast(1).of(foo2).before();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("baz")})));
}
});
Mockups.allowing(context, foo2);
tr.addTarget(foo2);
Assert.assertTrue(tr.hasTarget(new ITarget.Name("foo")));
ITarget trg = tr.getTarget(new ITarget.Name("foo"));
Assert.assertNotNull(trg);
Assert.assertTrue(Sequence.fromIterable(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("bar"), new ITarget.Name("baz")})).disjunction(Sequence.fromIterable(trg.before())).isEmpty());
Assert.assertFalse(tr.hasCycles());
tr.sortedTargets();
Assert.assertSame(trg, Sequence.fromIterable(tr.sortedTargets()).first());
}
@Test
public void test_available() throws Exception {
TargetRange tr = new TargetRange();
final ITarget make = Mockups.target(context, "make");
Mockups.allowing(context, make);
tr.addTarget(make);
final ITarget gen = Mockups.target(context, "gen");
final ITarget text = Mockups.target(context, "text");
context.checking(new Expectations() {
{
atLeast(1).of(text).after();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("gen")})));
atLeast(1).of(text).before();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("make")})));
atLeast(1).of(gen).before();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("make")})));
}
});
Mockups.allowing(context, gen);
Mockups.allowing(context, text);
tr.addRelated(ListSequence.fromListAndArray(new ArrayList<ITarget>(), gen, text));
Assert.assertTrue(tr.hasTarget(new ITarget.Name("gen")));
Assert.assertTrue(tr.hasTarget(new ITarget.Name("text")));
Utils.assertSameSequence(ListSequence.fromListAndArray(new ArrayList<ITarget>(), gen, text, make), tr.sortedTargets());
}
@Test
public void test_availablePrecursors() throws Exception {
TargetRange tr = new TargetRange();
final ITarget make = Mockups.target(context, "make");
final ITarget gen = Mockups.target(context, "gen");
final ITarget text = Mockups.target(context, "text");
final ITarget compile = Mockups.target(context, "compile");
context.checking(new Expectations() {
{
atLeast(1).of(text).after();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("gen")})));
atLeast(1).of(text).before();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("make")})));
atLeast(1).of(gen).before();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("make")})));
atLeast(1).of(compile).after();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("text")})));
}
});
Mockups.allowing(context, gen);
Mockups.allowing(context, text);
Mockups.allowing(context, make);
Mockups.allowing(context, compile);
tr.addTarget(compile);
tr.addRelatedPrecursors(ListSequence.fromListAndArray(new ArrayList<ITarget>(), gen, text, make));
Assert.assertTrue(tr.hasTarget(new ITarget.Name("gen")));
Assert.assertTrue(tr.hasTarget(new ITarget.Name("text")));
Assert.assertTrue(tr.hasTarget(new ITarget.Name("compile")));
Assert.assertFalse(tr.hasTarget(new ITarget.Name("make")));
Utils.assertSameSequence(ListSequence.fromListAndArray(new ArrayList<ITarget>(), gen, text, compile), tr.sortedTargets());
Utils.assertSameSequence(ListSequence.fromListAndArray(new ArrayList<ITarget>(), gen, text, compile), tr.targetAndSortedPrecursors(compile.getName()));
}
@Test
public void test_cycles() throws Exception {
TargetRange tr = new TargetRange();
final ITarget make = Mockups.target(context, "make", new ITarget.Name("make"));
context.checking(new Expectations() {
{
atLeast(1).of(make).before();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("make")})));
}
});
Mockups.allowing(context, make);
tr.addTarget(make);
Assert.assertTrue(tr.hasCycles());
Assert.assertSame(make.getName(), ListSequence.fromList(ListSequence.fromList(tr.cycles()).first()).first());
}
@Test
public void test_config() throws Exception {
TargetRange tr = new TargetRange();
final ITarget cfg = Mockups.target(context, "cfg");
final ITarget gen = Mockups.target(context, "gen");
context.checking(new Expectations() {
{
atLeast(1).of(gen).after();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("cfg")})));
}
});
Mockups.allowing(context, cfg);
Mockups.allowing(context, gen);
tr.addTarget(gen);
tr.addRelated(ListSequence.fromListAndArray(new ArrayList<ITarget>(), cfg, gen));
Assert.assertTrue(tr.hasTarget(new ITarget.Name("gen")));
Assert.assertTrue(tr.hasTarget(new ITarget.Name("cfg")));
Utils.assertSameSequence(ListSequence.fromListAndArray(new ArrayList<ITarget>(), cfg, gen), tr.targetAndSortedPrecursors(new ITarget.Name("gen")));
Utils.assertSameSequence(ListSequence.fromListAndArray(new ArrayList<ITarget>(), cfg), tr.immediatePrecursors(new ITarget.Name("gen")));
}
@Test
public void test_precursors() throws Exception {
TargetRange tr = new TargetRange();
final ITarget make = Mockups.target(context, "make");
Mockups.allowing(context, make);
tr.addTarget(make);
final ITarget res = Mockups.target(context, "res");
final ITarget gen = Mockups.target(context, "gen");
final ITarget text = Mockups.target(context, "text");
context.checking(new Expectations() {
{
atLeast(1).of(text).after();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("gen")})));
atLeast(1).of(text).before();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("make")})));
atLeast(1).of(gen).after();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("res")})));
atLeast(1).of(gen).before();
will(Expectations.returnValue(Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("make")})));
}
});
Mockups.allowing(context, res);
Mockups.allowing(context, gen);
Mockups.allowing(context, text);
tr.addRelated(ListSequence.fromListAndArray(new ArrayList<ITarget>(), res, gen, text));
Assert.assertTrue(tr.hasTarget(new ITarget.Name("res")));
Assert.assertTrue(tr.hasTarget(new ITarget.Name("gen")));
Assert.assertTrue(tr.hasTarget(new ITarget.Name("text")));
Utils.assertSameSequence(ListSequence.fromListAndArray(new ArrayList<ITarget>(), res, gen, text, make), tr.targetAndSortedPrecursors(new ITarget.Name("make")));
Utils.assertSameSequence(ListSequence.fromListAndArray(new ArrayList<ITarget>(), res, gen, text), tr.targetAndSortedPrecursors(new ITarget.Name("text")));
Utils.assertSameSequence(ListSequence.fromListAndArray(new ArrayList<ITarget>(), gen, text), tr.immediatePrecursors(new ITarget.Name("make")));
}
public Targets_Test() {
}
}