1 ! Copyright (C) 2011 Joe Groff.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel math slots.macros tools.test ;
8 { 1 } [ T{ foo { a 1 } { b 2 } { c 3 } } "a" slot ] unit-test
10 { T{ foo { b 4 } } } [
12 [ 4 swap "b" set-slot ] keep
15 { T{ foo { a 7 } { b 5 } { c 6 } } } [
22 { T{ foo { a 1 } { b 4 } { c 3 } } } [
23 T{ foo { a 1 } { b 2 } { c 3 } } clone
24 [ "b" [ 2 * ] change-slot ] keep
27 { T{ foo { a 1/3 } { b 4 } { c 3 } } } [
28 T{ foo { a 1 } { b 2 } { c 3 } } clone
29 "b" [ 2 * ] change-slot*
30 "a" [ 3 / ] change-slot*
33 { T{ foo { a 9 } { b 1 } } } [
34 T{ foo { a 8 } } clone
40 { T{ foo { a 12 } { b 3 } } } [
41 T{ foo { a 10 } } clone
47 { T{ foo { a V{ 1 2 } } { b V{ 3 } } } } [
49 V{ 1 } clone "a" set-slot*
50 [ 2 swap "a" push-slot ]
51 [ 3 swap "b" push-slot ]
56 T{ foo { a 1 } { b 2 } { c 3 } }
61 T{ foo { a 1 } { b 2 } { c 3 } }
62 { "b" "a" "c" } slots>array
65 { T{ foo { a "one" } { b "two" } { c "three" } } } [
67 T{ foo { a 1 } { b 2 } { c 3 } } clone
68 [ { "b" "a" "c" } set-slots ] keep
71 { T{ foo { a "one" } { b "two" } { c "three" } } } [
72 { "two" "one" "three" }
73 T{ foo { a 1 } { b 2 } { c 3 } } clone
74 [ { "b" "a" "c" } array>set-slots ] keep