@Test public void backwardsEnqueue_inadequateCount() { new LogicAsserter() .stream( conj(Queue.O.last(42, B, Queue.of(Count.of(null), new Var())), Queue.O.last(42, A, B))) .workUnits(1) .test(); }
@Test public void backwardsEnqueue_success() { DiffList<Cons<Var, Cons<Var, Var>>, Var> startList = DiffList.of(Cons.of(new Var(), Cons.of(new Var(), new Var())), new Var()); new LogicAsserter() .stream( conj( Queue.O.last(10, A, Queue.of(Count.of(Count.of(null)), startList)), Queue.O.last(20, EMPTY, A), same(startList.head().cdr().cdr(), null), same(C, startList.head()))) .workUnits(2) .addRequestedVar(C) .startSubst() .put(C, Cons.list(Arrays.asList(20, 10))) .test(); }
@Test public void enqueue() { new LogicAsserter() .stream( conj( Queue.O.last(42, EMPTY, A), Queue.O.last("1011", A, B), Queue.O.last(false, B, C), Queue.O.last('a', C, FINISH_QUEUE), same(null, FINISH_QUEUE.contents().hole()), same(D, FINISH_QUEUE.contents().head()), same(E, FINISH_QUEUE.size()))) .addRequestedVar(D, E) .workUnits(2) .startSubst() .put(D, Cons.list(Arrays.asList(42, "1011", false, 'a'))) .put(E, Count.of(Count.of(Count.of(Count.of(null))))) .test(); }
@Test public void enqueueDeque() { new LogicAsserter() .stream( conj( Queue.O.last(42, EMPTY, A), Queue.O.last("1011", A, B), Queue.O.last(false, B, C), Queue.O.first(D, E, C), Queue.O.first(F, G, E), Queue.O.first(H, FINISH_QUEUE, G))) .addRequestedVar(D, F, H, FINISH_QUEUE.size()) .workUnits(2) .startSubst() .put(D, 42) .put(F, "1011") .put(H, false) .put(FINISH_QUEUE.size(), null) .test(); }