USING: kernel state-tables tools.test ;
IN: state-tables.tests
: test-table
    
    "a" "c" "z"  over set-entry
    "a" "o" "y"  over set-entry
    "a" "l" "x"  over set-entry
    "b" "o" "y"  over set-entry
    "b" "l" "x"  over set-entry
    "b" "s" "u"  over set-entry ;
[
    T{
        table
        f
        H{ 
            { "a" H{ { "l" "x" } { "c" "z" } { "o" "y" } } }
            { "b" H{ { "l" "x" } { "s" "u" } { "o" "y" } } }
        }
        H{ { "l" t } { "s" t } { "c" t } { "o" t } }
        f
        H{ }
    }
] [ test-table ] unit-test
[ "x" t ] [ "a" "l" test-table get-entry ] unit-test
[ "har" t ] [
    "a" "z" "har"  test-table [ set-entry ] keep
    >r "a" "z" r> get-entry
] unit-test
: vector-test-table
    
    "a" "c" "z"  over add-entry
    "a" "c" "r"  over add-entry
    "a" "o" "y"  over add-entry
    "a" "l" "x"  over add-entry
    "b" "o" "y"  over add-entry
    "b" "l" "x"  over add-entry
    "b" "s" "u"  over add-entry ;
[
T{ vector-table f
    H{ 
        { "a"
            H{ { "l" "x" } { "c" V{ "z" "r" } } { "o" "y" } } }
        { "b"
            H{ { "l" "x" } { "s" "u" } { "o" "y" } } }
    }
    H{ { "l" t } { "s" t } { "c" t } { "o" t } }
    f
    H{ }
}
] [ vector-test-table ] unit-test