예제 #1
0
 @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();
 }
예제 #2
0
  @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();
  }
예제 #3
0
 @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();
 }
예제 #4
0
 @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();
 }