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() { } }