diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2024-02-19 12:23:10 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2024-02-20 16:01:40 +0200 |
commit | 88640e677fa0695783eac68014d7d8d5bc42d117 (patch) | |
tree | b1de045dc2d8d290422aaebbfbdbe184e8074dfd /tests | |
parent | bed6b6a9170253e010cbffd59202add4edfd1c2b (diff) |
Add string_set buildfile value type
This exposes the std::set<std::string> type to buildfiles.
New functions:
$size(<string-set>)
Subscript returns true if the value is present and false otherwise (so
it is mapped to std::set::contains()). For example:
set = [string_set] a b c
if ($set[b])
...
Note that append (+=) and prepend (=+) have the same semantics
(std::set::insert()). For example:
set = [string_set] a b
set += c b # a b c
set =+ d b # a b c d
Example of iteration:
set = [string_set] a b c
for k: $set
...
Diffstat (limited to 'tests')
-rw-r--r-- | tests/function/string/testscript | 3 | ||||
-rw-r--r-- | tests/type/set/buildfile | 4 | ||||
-rw-r--r-- | tests/type/set/testscript | 52 |
3 files changed, 58 insertions, 1 deletions
diff --git a/tests/function/string/testscript b/tests/function/string/testscript index a363cc3..96f5c52 100644 --- a/tests/function/string/testscript +++ b/tests/function/string/testscript @@ -46,7 +46,8 @@ $* <'print $size([string] abc)' >'3' : basics $* <'print $size([string] )' >'0' : zero $* <'print $size([strings] a b c)' >'3' : strings - $* <'print $size([string_map] a@1 b@2 c@3)' >'3' : string_map + $* <'print $size([string_set] a b b)' >'2' : string-set + $* <'print $size([string_map] a@1 b@2 b@3)' >'2' : string-map } : find diff --git a/tests/type/set/buildfile b/tests/type/set/buildfile new file mode 100644 index 0000000..55b37bb --- /dev/null +++ b/tests/type/set/buildfile @@ -0,0 +1,4 @@ +# file : tests/type/set/buildfile +# license : MIT; see accompanying LICENSE file + +./: testscript $b diff --git a/tests/type/set/testscript b/tests/type/set/testscript new file mode 100644 index 0000000..3897220 --- /dev/null +++ b/tests/type/set/testscript @@ -0,0 +1,52 @@ +# file : tests/type/set/testscript +# license : MIT; see accompanying LICENSE file + +# See also tests in function/*/ (size()). + +.include ../../common.testscript + +: basics +: +$* <<EOI >>EOO +s = [string_set] a b a +print $s +s += c b +print $s +s =+ d b +print $s +EOI +a b +a b c +a b c d +EOO + +: type +: +$* <<EOI >>EOO +s = [string_set] +print $type($s) +EOI +string_set +EOO + +: subscript +: +$* <<EOI >>EOO +s = [string_set] a b c +print ($s[b]) +print ($s[z]) +EOI +true +false +EOO + +: iteration +: +$* <<EOI >>EOO +for s: [string_set] a b c + print $s +EOI +a +b +c +EOO |