/+ *test =/ items-from-keys |= keys=(list @ud) %+ turn keys |= k=@ud [k `@tas`(add k %a)] :: =/ test-items=(list [@ud @tas]) (items-from-keys (gulf 0 6)) :: =/ atom-map ((ordered-map @ud @tas) lte) =/ gte-atom-map ((ordered-map @ud @tas) gte) :: |% ++ test-ordered-map-gas ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) :: %+ expect-eq !> %.y !> (apt:atom-map a) :: ++ test-ordered-map-tap ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) :: %+ expect-eq !> test-items !> (tap:atom-map a) :: ++ test-ordered-map-tab-gte ^- tang :: =/ a=(tree [@ud @tas]) (gas:gte-atom-map ~ test-items) :: %+ expect-eq !> (flop test-items) !> (tab:gte-atom-map a ~ 7) :: ++ test-ordered-map-tab-gte-starting-from ^- tang :: =/ a=(tree [@ud @tas]) (gas:gte-atom-map ~ test-items) =/ small-test-items=(list [@ud @tas]) (items-from-keys (gulf 2 5)) :: %+ expect-eq !> (flop small-test-items) !> (tab:gte-atom-map a [~ 6] 4) :: ++ test-ordered-map-tab-gte-count ^- tang :: =/ a=(tree [@ud @tas]) (gas:gte-atom-map ~ test-items) =/ small-test-items=(list [@ud @tas]) (items-from-keys (gulf 4 6)) :: %+ expect-eq !> (flop small-test-items) !> (tab:gte-atom-map a ~ 3) :: ++ test-ordered-map-tab ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) :: %+ expect-eq !> test-items !> (tab:atom-map a ~ 7) :: ++ test-ordered-map-tab-starting-from ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) =/ small-test-items=(list [@ud @tas]) (items-from-keys (gulf 1 4)) :: %+ expect-eq !> small-test-items !> (tab:atom-map a [~ 0] 4) :: ++ test-ordered-map-tab-count ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) =/ small-test-items=(list [@ud @tas]) (items-from-keys (gulf 0 2)) :: %+ expect-eq !> small-test-items !> (tab:atom-map a ~ 3) :: ++ test-ordered-map-tab-more-than-exist ^- tang :: =/ specific-test-items=(list [@ud @tas]) (items-from-keys (gulf 1 6)) =/ a=(tree [@ud @tas]) (gas:atom-map ~ specific-test-items) :: %+ expect-eq !> specific-test-items !> (tab:atom-map a [~ 0] 8) :: ++ test-ordered-map-pop ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) :: %+ expect-eq !> [[0 %a] (gas:atom-map ~ (items-from-keys (gulf 1 6)))] !> (pop:atom-map a) :: ++ test-ordered-map-pry ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) :: %+ expect-eq !> `[0 %a] !> (pry:atom-map a) :: ++ test-ordered-map-nip ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) :: =/ b (nip:atom-map a) :: %+ expect-eq !> (gas:atom-map ~ ~[[0^%a] [1^%b] [2^%c] [3^%d] [4^%e] [5^%f]]) !> b :: ++ test-ordered-map-lot ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) :: =/ b (lot:atom-map a `0 `4) :: %+ expect-eq !> (gas:atom-map ~ ~[[1^%b] [2^%c] [3^%d]]) !> b :: ++ test-ordered-map-null-start-lot ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) :: =/ b (lot:atom-map a ~ `5) :: %+ expect-eq !> (gas:atom-map ~ ~[[0^%a] [1^%b] [2^%c] [3^%d] [4^%e]]) !> b :: ++ test-ordered-map-null-end-lot ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) :: =/ b (lot:atom-map a `1 ~) :: %+ expect-eq !> (gas:atom-map ~ ~[[2^%c] [3^%d] [4^%e] [5^%f] [6^%g]]) !> b :: ++ test-ordered-map-double-null-lot ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) :: =/ b (lot:atom-map a ~ ~) :: %+ expect-eq !> (gas:atom-map ~ ~[[0^%a] [1^%b] [2^%c] [3^%d] [4^%e] [5^%f] [6^%g]]) !> b :: ++ test-ordered-map-not-found-start-lot ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ ~[[1^%b]]) :: =/ b (lot:atom-map a `0 ~) :: %+ expect-eq !> (gas:atom-map ~ ~[[1^%b]]) !> b :: ++ test-ordered-map-dip ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ test-items) :: =/ b %- (dip:atom-map ,(list [@ud @tas])) :* a state=~ :: |= [s=(list [@ud @tas]) k=@ud v=@tas] :+ ?: =(3 k) ~ [~ `@tas`+(v)] =(5 k) [[k v] s] == :: ;: weld %+ expect-eq !> (gas:atom-map ~ ~[[0^%b] [1^%c] [2^%d] [4^%f] [5^%g] [6^%g]]) !> +.b :: %+ expect-eq !> (flop (items-from-keys (gulf 0 5))) !> -.b == :: ++ test-ordered-map-dip-delete-all ^- tang ;: weld =/ q ((ordered-map ,@ ,~) lte) =/ o (gas:q ~ ~[1/~ 2/~ 3/~]) =/ b ((dip:q ,~) o ~ |=([~ key=@ ~] [~ %| ~])) %+ expect-eq !> [~ ~] !> b :: =/ c :~ [[2.127 1] ~] [[2.127 2] ~] [[2.127 3] ~] [[2.127 7] ~] [[2.127 8] ~] [[2.127 9] ~] == =/ compare |= [[aa=@ ab=@] [ba=@ bb=@]] ?:((lth aa ba) %.y ?:((gth aa ba) %.n (lte ab bb))) =/ q ((ordered-map ,[@ @] ,~) compare) =/ o (gas:q ~ c) =/ b ((dip:q ,~) o ~ |=([~ key=[@ @] ~] [~ %| ~])) %+ expect-eq !> [~ ~] !> b == :: ++ test-ordered-map-uni ^- tang :: =/ a=(tree [@ud @tas]) (gas:atom-map ~ (scag 4 test-items)) =/ b=(tree [@ud @tas]) (gas:atom-map ~ (slag 4 test-items)) :: =/ c (uni:atom-map a b) :: %+ expect-eq !> (gas:atom-map ~ test-items) !> c --