Browse Source

traverse prev

dxt 4 years ago
parent
commit
b790cc3c01
1 changed files with 32 additions and 10 deletions
  1. 32 10
      test/fd_test.exs

+ 32 - 10
test/fd_test.exs

@@ -41,26 +41,48 @@ defmodule Fd.Test do
     end
 
     test "next", kvs do
-        log :kvs.all("/crm/luck")
         last = msg(id: Enum.at(kvs[:id1],9))
         KVS.reader(id: rid) = :kvs.save(:kvs.top(:kvs.reader("/crm/luck")))
         kvs[:id1] |> Enum.with_index 
                   |> Enum.each(fn {id,9} ->
-                        r = :kvs.load_reader(rid)
-                        assert r1 = KVS.reader(feed: "/crm/luck", cache: c1, count: 10, dir: 0, args: [^last]) = :kvs.next(r)
-                        assert KVS.reader(args: [], feed: "/crm/luck", cache: c1) = :kvs.save(r1)
-                {id,i} -> 
-                    v = msg(id: Enum.at(kvs[:id1],i))
-                    c = Enum.at(kvs[:id1],i+1)
-                    r = :kvs.load_reader(rid)
-                    assert r1 = KVS.reader(feed: "/crm/luck", cache: {:msg,^c,"/crm/luck"}, count: 10, dir: 0, args: [^v]) = :kvs.next(r)
-                    assert KVS.reader(args: [], feed: "/crm/luck", cache: {:msg,^c,"/crm/luck"}) = :kvs.save(r1)
+                r = :kvs.load_reader(rid)
+                assert r1 = KVS.reader(feed: "/crm/luck", cache: c1, count: 10, dir: 0, args: [^last]) = :kvs.next(r)
+                assert KVS.reader(args: [], feed: "/crm/luck", cache: c1) = :kvs.save(r1)
+            {id,i} -> 
+                v = msg(id: Enum.at(kvs[:id1],i))
+                c = Enum.at(kvs[:id1],i+1)
+                r = :kvs.load_reader(rid)
+                assert r1 = KVS.reader(feed: "/crm/luck", cache: {:msg,^c,"/crm/luck"}, count: 10, dir: 0, args: [^v]) = :kvs.next(r)
+                assert KVS.reader(args: [], feed: "/crm/luck", cache: {:msg,^c,"/crm/luck"}) = :kvs.save(r1)
             end)
         r = :kvs.load_reader(rid)
         assert r == :kvs.next(r)
         assert r == KVS.reader(:kvs.next(:kvs.bot(r)), args: [])
     end
 
+    test "prev", kvs do
+        out = Enum.at(kvs[:id0],9)
+        KVS.reader(id: rid) = :kvs.save(:kvs.bot(:kvs.reader("/crm/luck")))
+        ids = kvs[:id1] |> Enum.reverse
+        ids |> Enum.with_index
+            |> Enum.each(fn {id,9} ->
+                r = :kvs.load_reader(rid)
+                v = msg(id: Enum.at(ids, 9))
+                assert r1 = KVS.reader(feed: "/crm/luck", cache: {:msg, ^out, "/crm/duck"}, count: 10, args: [^v]) = :kvs.prev(r)
+                assert KVS.reader(args: [], feed: "/crm/luck", cache: c1) = :kvs.save(r1)
+            {id,i} ->
+                r = :kvs.load_reader(rid)
+                v = msg(id: Enum.at(ids, i))
+                c = Enum.at(ids, i+1)
+                assert r1 = KVS.reader(feed: "/crm/luck", cache: {:msg, ^c, "/crm/luck"}, count: 10, args: [^v]) = :kvs.prev(r)
+                assert KVS.reader(args: [], feed: "/crm/luck", cache: {:msg, ^c, "/crm/luck"}) = :kvs.save(r1)
+            end)
+        r = :kvs.load_reader(rid)
+        assert r = :kvs.prev(r)
+        assert r = KVS.reader(:kvs.prev(:kvs.top(r)), args: [])                 
+    end
+
+
     defp log(x), do: IO.puts '#{inspect(x)}'
     defp log(m, x), do: IO.puts '#{m} #{inspect(x)}'
 end