From 981b6e7560de7a17dd004b828a78c81840100afd Mon Sep 17 00:00:00 2001
From: giles
Date: Wed, 8 Apr 2026 22:13:51 +0000
Subject: [PATCH] Tier 1 conformance: 160/259 passing (62%) in sandbox
- Re-extracted 259 fixtures from _hyperscript 0.9.14 (was 214)
Improved extractor handles: JS eval'd expected values, should.equal(x,y),
multi-line string concatenation, deep.equal for objects/arrays
- Fixed type-check-strict compiler match (was still using old name)
- Sandbox runner uses cek-eval (full env, no hacks)
- Run: sx_playwright mode=sandbox stack=hs
files=[spec/tests/test-hyperscript-conformance-sandbox.sx]
expr=(do (hs-conf-run-all) (hs-conf-report))
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../test-hyperscript-conformance-sandbox.sx | 473 ++++++++++--------
1 file changed, 259 insertions(+), 214 deletions(-)
diff --git a/spec/tests/test-hyperscript-conformance-sandbox.sx b/spec/tests/test-hyperscript-conformance-sandbox.sx
index 4819f44b..abad1c43 100644
--- a/spec/tests/test-hyperscript-conformance-sandbox.sx
+++ b/spec/tests/test-hyperscript-conformance-sandbox.sx
@@ -54,218 +54,263 @@
;; ── Fixtures ────────────────────────────────────────────────────
(define hs-conf-all-fixtures (list
- {:src "[1, 2, 3]" :expected (list 1 2 3)}
- {:src "[]" :expected (list)}
- {:src "[true]" :expected (list true)}
- {:src "[true, false]" :expected (list true false)}
- {:src "10 as String" :expected "10"}
- {:src "true as String" :expected "true"}
- {:src "'10' as Int" :expected 10}
- {:src "'10.4' as Int" :expected 10}
- {:src "'10' as Float" :expected 10}
- {:src "'10.4' as Float" :expected 10.4}
- {:src "'10.4' as Fixed" :expected "10"}
- {:src "'10.4899' as Fixed:2" :expected "10.49"}
- {:src "'10' as Number" :expected 10}
- {:src "'10.4' as Number" :expected 10.4}
- {:src "{foo:'bar'} as JSON" :expected "{\"foo\":\"bar\"}"}
- {:src "'{\"foo\":\"bar\"}' as Object" :expected "bar"}
- {:src "'{\"foo\":\"bar\"}' as an Object" :expected "bar"}
- {:src "x as Object" :expected "bar"}
- {:src "x as Values" :expected "John"}
- {:src "value as HTML" :expected "123"}
- {:src "value as Fragment" :expected 1}
- {:src "1 as Foo" :expected "foo1"}
- {:src "1 as Foo:Bar" :expected "Bar1"}
- {:src "\\\\-> true" :expected true}
- {:src "\\\\ x -> x" :expected true}
- {:src "\\\\ x, y -> y" :expected true}
- {:src "['a', 'ab', 'abc'].map(\\\\ s -> s.length )" :expected (list 1 2 3)}
- {:src "true" :expected true}
- {:src "false" :expected false}
- {:src ".badClassThatDoesNotHaveAnyElements" :expected 0}
- {:src "1 < 2" :expected true}
- {:src "2 < 1" :expected false}
- {:src "2 < 2" :expected false}
- {:src "1 <= 2" :expected true}
- {:src "2 <= 1" :expected false}
- {:src "2 <= 2" :expected true}
- {:src "1 > 2" :expected false}
- {:src "2 > 1" :expected true}
- {:src "2 > 2" :expected false}
- {:src "1 >= 2" :expected false}
- {:src "2 >= 1" :expected true}
- {:src "2 >= 2" :expected true}
- {:src "1 == 2" :expected false}
- {:src "2 == 1" :expected false}
- {:src "2 == 2" :expected true}
- {:src "1 === 2" :expected false}
- {:src "2 === 1" :expected false}
- {:src "2 === 2" :expected true}
- {:src "1 != 2" :expected true}
- {:src "2 != 1" :expected true}
- {:src "2 != 2" :expected false}
- {:src "1 !== 2" :expected true}
- {:src "2 !== 1" :expected true}
- {:src "2 !== 2" :expected false}
- {:src "1 is 2" :expected false}
- {:src "2 is 1" :expected false}
- {:src "2 is 2" :expected true}
- {:src "1 equals 2" :expected false}
- {:src "2 equals 1" :expected false}
- {:src "2 equals 2" :expected true}
- {:src "1 is equal to 2" :expected false}
- {:src "2 is equal to 1" :expected false}
- {:src "2 is equal to 2" :expected true}
- {:src "1 is really equal to 2" :expected false}
- {:src "2 is really equal to 1" :expected false}
- {:src "2 is really equal to '2'" :expected false}
- {:src "2 is really equal to 2" :expected true}
- {:src "1 really equals 2" :expected false}
- {:src "2 really equals 1" :expected false}
- {:src "2 really equals 2" :expected true}
- {:src "1 is not 2" :expected true}
- {:src "2 is not 1" :expected true}
- {:src "2 is not 2" :expected false}
- {:src "1 is not equal to 2" :expected true}
- {:src "2 is not equal to 1" :expected true}
- {:src "2 is not equal to 2" :expected false}
- {:src "1 is not really equal to 2" :expected true}
- {:src "2 is not really equal to 1" :expected true}
- {:src "2 is not really equal to '2'" :expected true}
- {:src "2 is not really equal to 2" :expected false}
- {:src "1 is in [1, 2]" :expected true}
- {:src "2 is in [1, 2]" :expected true}
- {:src "3 is in [1, 2]" :expected false}
- {:src "3 is in null" :expected false}
- {:src "1 is not in [1, 2]" :expected false}
- {:src "2 is not in [1, 2]" :expected false}
- {:src "3 is not in [1, 2]" :expected true}
- {:src "3 is not in null" :expected true}
- {:src "I am in [1, 2]" :me 1 :expected true}
- {:src "I am in [1, 2]" :me 2 :expected true}
- {:src "I am in [1, 2]" :me 3 :expected false}
- {:src "I am in null" :expected false}
- {:src "I am not in [1, 2]" :me 1 :expected false}
- {:src "I am not in [1, 2]" :me 2 :expected false}
- {:src "I am not in [1, 2]" :me 3 :expected true}
- {:src "I am not in null" :expected true}
- {:src "'a' matches '.*'" :expected true}
- {:src "'a' matches 'b'" :expected false}
- {:src "'a' does not match '.*'" :expected false}
- {:src "'a' does not match 'b'" :expected true}
- {:src "undefined is empty" :expected true}
- {:src "'' is empty" :expected true}
- {:src "[] is empty" :expected true}
- {:src "'not empty' is empty" :expected false}
- {:src "1000 is empty" :expected false}
- {:src "[1,2,3] is empty" :expected false}
- {:src "undefined is not empty" :expected false}
- {:src "'' is not empty" :expected false}
- {:src "[] is not empty" :expected false}
- {:src "'not empty' is not empty" :expected true}
- {:src "1000 is not empty" :expected true}
- {:src "[1,2,3] is not empty" :expected true}
- {:src "null is a String" :expected true}
- {:src "null is a String!" :expected false}
- {:src "'' is a String!" :expected true}
- {:src "null is not a String" :expected false}
- {:src "null is not a String!" :expected true}
- {:src "'' is not a String!" :expected false}
- {:src "null is an String" :expected true}
- {:src "null is an String!" :expected false}
- {:src "'' is an String!" :expected true}
- {:src "null is not an String" :expected false}
- {:src "null is not an String!" :expected true}
- {:src "'' is not an String!" :expected false}
- {:src "1 is less than 2" :expected true}
- {:src "2 is less than 1" :expected false}
- {:src "2 is less than 2" :expected false}
- {:src "1 is less than or equal to 2" :expected true}
- {:src "2 is less than or equal to 1" :expected false}
- {:src "2 is less than or equal to 2" :expected true}
- {:src "1 is greater than 2" :expected false}
- {:src "2 is greater than 1" :expected true}
- {:src "2 is greater than 2" :expected false}
- {:src "1 is greater than or equal to 2" :expected false}
- {:src "2 is greater than or equal to 1" :expected true}
- {:src "2 is greater than or equal to 2" :expected true}
- {:src "undefined does not exist" :expected true}
- {:src "null does not exist" :expected true}
- {:src "cookies.foo" :expected "bar"}
- {:src "set cookies.foo to 'bar'" :expected "bar"}
- {:src "cookies.foo" :expected "bar"}
- {:src "set cookies.foo to 'bar'" :expected "bar"}
- {:src "cookies.foo" :expected "bar"}
- {:src "set cookies.foo to 'doh'" :expected "doh"}
- {:src "cookies.foo" :expected "doh"}
- {:src "set cookies.foo to 'bar'" :expected true}
- {:src "for x in cookies me.push(x.name) then you.push(x.value) end" :expected true}
- {:src "1 in [1, 2, 3]" :expected (list 1)}
- {:src "[1, 3] in [1, 2, 3]" :expected (list 1 3)}
- {:src "[1, 3, 4] in [1, 2, 3]" :expected (list 1 3)}
- {:src "[4, 5, 6] in [1, 2, 3]" :expected (list)}
- {:src "func1() and func2()" :expected false}
- {:src "func1() or func2()" :expected true}
- {:src "1 + 1" :expected 2}
- {:src "'a' + 'b'" :expected "ab"}
- {:src "1 - 1" :expected 0}
- {:src "1 * 2" :expected 2}
- {:src "1 / 2" :expected 0.5}
- {:src "3 mod 2" :expected 1}
- {:src "1 + 2 + 3" :expected 6}
- {:src "1 + (2 * 3)" :expected 7}
- {:src "no null" :expected true}
- {:src "no 'thing'" :expected false}
- {:src "no ['thing']" :expected false}
- {:src "no []" :expected true}
- {:src "no .aClassThatDoesNotExist" :expected true}
- {:src "not true" :expected false}
- {:src "not false" :expected true}
- {:src "not not true" :expected true}
- {:src "-1" :expected -1}
- {:src "1" :expected 1}
- {:src "1.1" :expected 1.1}
- {:src "1234567890.1234567890" :expected 1234570000}
- {:src "{}" :expected {}}
- {:src "{-foo:true, bar-baz:false}" :expected {:bar-baz false :-foo true}}
- {:src "{foo:true, bar-baz:false,}" :expected {:bar-baz false :foo true}}
- {:src "the first of [1, 2, 3]" :expected 1}
- {:src "the last of [1, 2, 3]" :expected 3}
- {:src "foo's foo" :expected "foo"}
- {:src "its foo" :expected "foo"}
- {:src "foo.foo" :expected "foo"}
- {:src "foo of foo" :expected "foo"}
- {:src "bar.doh of foo" :expected "foo"}
- {:src "doh of foo.bar" :expected "foo"}
- {:src "<.badClassThatDoesNotHaveAnyElements/>" :expected 0}
- {:src "some null" :expected false}
- {:src "some 'thing'" :expected true}
- {:src "some []" :expected false}
- {:src "some .aClassThatDoesNotExist" :expected false}
- {:src "some " :expected true}
- {:src "some ['thing']" :expected true}
- {:src "1em" :expected "1em"}
- {:src "1px" :expected "1px"}
- {:src "-1px" :expected "-1px"}
- {:src "100%" :expected "100%"}
- {:src "1 em" :expected "1em"}
- {:src "1 px" :expected "1px"}
- {:src "100 %" :expected "100%"}
- {:src "\"foo\"" :expected "foo"}
- {:src "\"fo'o\"" :expected "fo'o"}
- {:src "'foo'" :expected "foo"}
- {:src "`$1`" :expected "1"}
- {:src "`${1 + 2}`" :expected "3"}
- {:src "` ${1 + 2} ${1 + 2} `" :expected " 3 3 "}
- {:src "`${1 + 2} ${1 + 2} `" :expected "3 3 "}
- {:src "`${1 + 2}${1 + 2} `" :expected "33 "}
- {:src "`${1 + 2} ${1 + 2}`" :expected "3 3"}
- {:src "`${record.name}
`" :expected "John Connor
"}
- {:src "`https://${foo}`" :locals {:foo "bar"} :expected "https://bar"}
- {:src "foo" :locals {:foo 42} :expected 42}
- {:src "'foo' : String" :expected "foo"}
- {:src "true : String" :expected 0}
- {:src "'foo' : String!" :expected "foo"}
- {:src "null : String!" :expected 0}
+ {"src" "[1, 2, 3]" "expected" (list 1 2 3)}
+ {"src" "[]" "expected" (list)}
+ {"src" "[true]" "expected" (list true)}
+ {"src" "[true, false]" "expected" (list true false)}
+ {"src" "null as String" "expected" nil}
+ {"src" "10 as String" "expected" "10"}
+ {"src" "true as String" "expected" "true"}
+ {"src" "'10' as Int" "expected" 10}
+ {"src" "'10.4' as Int" "expected" 10}
+ {"src" "'10' as Float" "expected" 10}
+ {"src" "'10.4' as Float" "expected" 10.4}
+ {"src" "'10.4' as Fixed" "expected" "10"}
+ {"src" "'10.4899' as Fixed:2" "expected" "10.49"}
+ {"src" "'10' as Number" "expected" 10}
+ {"src" "'10.4' as Number" "expected" 10.4}
+ {"src" "1 as Date" "expected" 1}
+ {"src" "1 as a Date" "expected" 1}
+ {"src" "{foo:'bar'} as JSON" "expected" "{\"foo\":\"bar\"}"}
+ {"src" "'{\"foo\":\"bar\"}' as Object" "expected" "bar"}
+ {"src" "'{\"foo\":\"bar\"}' as an Object" "expected" "bar"}
+ {"src" "x as Object" "expected" "bar"}
+ {"src" "x as Values" "expected" "John"}
+ {"src" "d as HTML" "expected" "this-is-html"}
+ {"src" "value as HTML" "expected" "123"}
+ {"src" "value as Fragment" "expected" 1}
+ {"src" "1 as Foo" "expected" "foo1"}
+ {"src" "1 as Foo:Bar" "expected" "Bar1"}
+ {"src" "func(async 1)" "expected" 1}
+ {"src" "\\\\-> true" "expected" true}
+ {"src" "\\\\ x -> x" "expected" true}
+ {"src" "\\\\ x, y -> y" "expected" true}
+ {"src" "['a', 'ab', 'abc'].map(\\\\ s -> s.length )" "expected" (list 1 2 3)}
+ {"src" "true" "expected" true}
+ {"src" "false" "expected" false}
+ {"src" ".badClassThatDoesNotHaveAnyElements" "expected" 0}
+ {"src" "1 < 2" "expected" true}
+ {"src" "2 < 1" "expected" false}
+ {"src" "2 < 2" "expected" false}
+ {"src" "1 <= 2" "expected" true}
+ {"src" "2 <= 1" "expected" false}
+ {"src" "2 <= 2" "expected" true}
+ {"src" "1 > 2" "expected" false}
+ {"src" "2 > 1" "expected" true}
+ {"src" "2 > 2" "expected" false}
+ {"src" "1 >= 2" "expected" false}
+ {"src" "2 >= 1" "expected" true}
+ {"src" "2 >= 2" "expected" true}
+ {"src" "1 == 2" "expected" false}
+ {"src" "2 == 1" "expected" false}
+ {"src" "2 == 2" "expected" true}
+ {"src" "1 === 2" "expected" false}
+ {"src" "2 === 1" "expected" false}
+ {"src" "2 === 2" "expected" true}
+ {"src" "1 != 2" "expected" true}
+ {"src" "2 != 1" "expected" true}
+ {"src" "2 != 2" "expected" false}
+ {"src" "1 !== 2" "expected" true}
+ {"src" "2 !== 1" "expected" true}
+ {"src" "2 !== 2" "expected" false}
+ {"src" "1 is 2" "expected" false}
+ {"src" "2 is 1" "expected" false}
+ {"src" "2 is 2" "expected" true}
+ {"src" "1 equals 2" "expected" false}
+ {"src" "2 equals 1" "expected" false}
+ {"src" "2 equals 2" "expected" true}
+ {"src" "1 is equal to 2" "expected" false}
+ {"src" "2 is equal to 1" "expected" false}
+ {"src" "2 is equal to 2" "expected" true}
+ {"src" "1 is really equal to 2" "expected" false}
+ {"src" "2 is really equal to 1" "expected" false}
+ {"src" "2 is really equal to '2'" "expected" false}
+ {"src" "2 is really equal to 2" "expected" true}
+ {"src" "1 really equals 2" "expected" false}
+ {"src" "2 really equals 1" "expected" false}
+ {"src" "2 really equals 2" "expected" true}
+ {"src" "1 is not 2" "expected" true}
+ {"src" "2 is not 1" "expected" true}
+ {"src" "2 is not 2" "expected" false}
+ {"src" "1 is not equal to 2" "expected" true}
+ {"src" "2 is not equal to 1" "expected" true}
+ {"src" "2 is not equal to 2" "expected" false}
+ {"src" "1 is not really equal to 2" "expected" true}
+ {"src" "2 is not really equal to 1" "expected" true}
+ {"src" "2 is not really equal to '2'" "expected" true}
+ {"src" "2 is not really equal to 2" "expected" false}
+ {"src" "1 is in [1, 2]" "expected" true}
+ {"src" "2 is in [1, 2]" "expected" true}
+ {"src" "3 is in [1, 2]" "expected" false}
+ {"src" "3 is in null" "expected" false}
+ {"src" "1 is not in [1, 2]" "expected" false}
+ {"src" "2 is not in [1, 2]" "expected" false}
+ {"src" "3 is not in [1, 2]" "expected" true}
+ {"src" "3 is not in null" "expected" true}
+ {"src" "I am in [1, 2]" "expected" true "me" 1}
+ {"src" "I am in [1, 2]" "expected" true "me" 2}
+ {"src" "I am in [1, 2]" "expected" false "me" 3}
+ {"src" "I am in null" "expected" false}
+ {"src" "I am not in [1, 2]" "expected" false "me" 1}
+ {"src" "I am not in [1, 2]" "expected" false "me" 2}
+ {"src" "I am not in [1, 2]" "expected" true "me" 3}
+ {"src" "I am not in null" "expected" true}
+ {"src" "'a' matches '.*'" "expected" true}
+ {"src" "'a' matches 'b'" "expected" false}
+ {"src" "'a' does not match '.*'" "expected" false}
+ {"src" "'a' does not match 'b'" "expected" true}
+ {"src" "I contain that" "expected" true}
+ {"src" "that contains me" "expected" true}
+ {"src" "I include that" "expected" true}
+ {"src" "that includes me" "expected" true}
+ {"src" "undefined is empty" "expected" true}
+ {"src" "'' is empty" "expected" true}
+ {"src" "[] is empty" "expected" true}
+ {"src" "'not empty' is empty" "expected" false}
+ {"src" "1000 is empty" "expected" false}
+ {"src" "[1,2,3] is empty" "expected" false}
+ {"src" ".aClassThatDoesNotExist is empty" "expected" true}
+ {"src" "undefined is not empty" "expected" false}
+ {"src" "'' is not empty" "expected" false}
+ {"src" "[] is not empty" "expected" false}
+ {"src" "'not empty' is not empty" "expected" true}
+ {"src" "1000 is not empty" "expected" true}
+ {"src" "[1,2,3] is not empty" "expected" true}
+ {"src" "null is a String" "expected" true}
+ {"src" "null is a String!" "expected" false}
+ {"src" "'' is a String!" "expected" true}
+ {"src" "null is not a String" "expected" false}
+ {"src" "null is not a String!" "expected" true}
+ {"src" "'' is not a String!" "expected" false}
+ {"src" "null is an String" "expected" true}
+ {"src" "null is an String!" "expected" false}
+ {"src" "'' is an String!" "expected" true}
+ {"src" "null is not an String" "expected" false}
+ {"src" "null is not an String!" "expected" true}
+ {"src" "'' is not an String!" "expected" false}
+ {"src" "1 is less than 2" "expected" true}
+ {"src" "2 is less than 1" "expected" false}
+ {"src" "2 is less than 2" "expected" false}
+ {"src" "1 is less than or equal to 2" "expected" true}
+ {"src" "2 is less than or equal to 1" "expected" false}
+ {"src" "2 is less than or equal to 2" "expected" true}
+ {"src" "1 is greater than 2" "expected" false}
+ {"src" "2 is greater than 1" "expected" true}
+ {"src" "2 is greater than 2" "expected" false}
+ {"src" "1 is greater than or equal to 2" "expected" false}
+ {"src" "2 is greater than or equal to 1" "expected" true}
+ {"src" "2 is greater than or equal to 2" "expected" true}
+ {"src" "undefined does not exist" "expected" true}
+ {"src" "null does not exist" "expected" true}
+ {"src" "#doesNotExist does not exist" "expected" true}
+ {"src" ".aClassThatDoesNotExist does not exist" "expected" true}
+ {"src" "<.aClassThatDoesNotExist/> does not exist" "expected" true}
+ {"src" " does not exist" "expected" false}
+ {"src" "cookies.clearAll()" "expected" nil}
+ {"src" "cookies.foo" "expected" nil}
+ {"src" "set cookies.foo to 'bar'" "expected" "bar"}
+ {"src" "cookies.foo" "expected" "bar"}
+ {"src" "set cookies.foo to 'bar'" "expected" "bar"}
+ {"src" "cookies.foo" "expected" "bar"}
+ {"src" "set cookies.foo to 'doh'" "expected" "doh"}
+ {"src" "cookies.foo" "expected" "doh"}
+ {"src" "set cookies.foo to 'bar'" "expected" nil}
+ {"src" "cookies.clear('foo')" "expected" nil}
+ {"src" "cookies.foo" "expected" nil}
+ {"src" "set cookies.foo to 'bar'" "expected" true}
+ {"src" "for x in cookies me.push(x.name) then you.push(x.value) end" "expected" true}
+ {"src" "identity(\"foo\")" "expected" "foo"}
+ {"src" "obj.getValue()" "expected" "foo"}
+ {"src" "1 in [1, 2, 3]" "expected" (list 1)}
+ {"src" "[1, 3] in [1, 2, 3]" "expected" (list 1 3)}
+ {"src" "[1, 3, 4] in [1, 2, 3]" "expected" (list 1 3)}
+ {"src" "[4, 5, 6] in [1, 2, 3]" "expected" (list)}
+ {"src" "true and false" "expected" false}
+ {"src" "true or false" "expected" true}
+ {"src" "true and true and false" "expected" false}
+ {"src" "true and (false or true)" "expected" true}
+ {"src" "func1() and func2()" "expected" false}
+ {"src" "func1() or func2()" "expected" true}
+ {"src" "1 + 1" "expected" 2}
+ {"src" "'a' + 'b'" "expected" "ab"}
+ {"src" "1 - 1" "expected" 0}
+ {"src" "1 * 2" "expected" 2}
+ {"src" "1 / 2" "expected" 0.5}
+ {"src" "3 mod 2" "expected" 1}
+ {"src" "1 + 2 + 3" "expected" 6}
+ {"src" "1 + (2 * 3)" "expected" 7}
+ {"src" "no null" "expected" true}
+ {"src" "no 'thing'" "expected" false}
+ {"src" "no []" "expected" true}
+ {"src" "no .aClassThatDoesNotExist" "expected" true}
+ {"src" "no ['thing']" "expected" false}
+ {"src" "not true" "expected" false}
+ {"src" "not false" "expected" true}
+ {"src" "not not true" "expected" true}
+ {"src" "null" "expected" nil}
+ {"src" "-1" "expected" -1}
+ {"src" "1" "expected" 1}
+ {"src" "1.1" "expected" 1.1}
+ {"src" "1e6" "expected" 1000000}
+ {"src" "1e-6" "expected" 0.000001}
+ {"src" "1.1e6" "expected" 1100000}
+ {"src" "1.1e-6" "expected" 0.0000011}
+ {"src" "1234567890.1234567890" "expected" 1234567890.1234567}
+ {"src" "{}" "expected" {}}
+ {"src" "{foo:true}" "expected" {"foo" true}}
+ {"src" "{foo:true, bar:false}" "expected" {"foo" true "bar" false}}
+ {"src" "{\"foo\":true, \"bar\":false}" "expected" {"foo" true "bar" false}}
+ {"src" "{-foo:true, bar-baz:false}" "expected" {"-foo" true "bar-baz" false}}
+ {"src" "{foo:true, bar-baz:false,}" "expected" {"foo" true "bar-baz" false}}
+ {"src" "{[foo]:true, [bar()]:false}" "expected" {"bar" true "foo" false}}
+ {"src" "the first of [1, 2, 3]" "expected" 1}
+ {"src" "the last of [1, 2, 3]" "expected" 3}
+ {"src" "the first of null" "expected" nil}
+ {"src" "foo's foo" "expected" "foo"}
+ {"src" "foo's foo" "expected" nil}
+ {"src" "my foo" "expected" "foo"}
+ {"src" "my foo" "expected" nil}
+ {"src" "its foo" "expected" "foo"}
+ {"src" "its foo" "expected" nil}
+ {"src" "foo.foo" "expected" "foo"}
+ {"src" "foo.foo" "expected" nil}
+ {"src" "foo of foo" "expected" "foo"}
+ {"src" "bar.doh of foo" "expected" "foo"}
+ {"src" "doh of foo.bar" "expected" "foo"}
+ {"src" "<.badClassThatDoesNotHaveAnyElements/>" "expected" 0}
+ {"src" "some null" "expected" false}
+ {"src" "some 'thing'" "expected" true}
+ {"src" "some []" "expected" false}
+ {"src" "some .aClassThatDoesNotExist" "expected" false}
+ {"src" "some
" "expected" true}
+ {"src" "some ['thing']" "expected" true}
+ {"src" "1em" "expected" "1em"}
+ {"src" "1px" "expected" "1px"}
+ {"src" "-1px" "expected" "-1px"}
+ {"src" "100%" "expected" "100%"}
+ {"src" "1 em" "expected" "1em"}
+ {"src" "1 px" "expected" "1px"}
+ {"src" "100 %" "expected" "100%"}
+ {"src" "(0 + 1) em" "expected" "1em"}
+ {"src" "(0 + 1) px" "expected" "1px"}
+ {"src" "(100 + 0) %" "expected" "100%"}
+ {"src" "\"foo\"" "expected" "foo"}
+ {"src" "\"fo'o\"" "expected" "fo'o"}
+ {"src" "'foo'" "expected" "foo"}
+ {"src" "`$1`" "expected" "1"}
+ {"src" "`$window.foo`" "expected" "foo"}
+ {"src" "`${window.foo}`" "expected" "foo"}
+ {"src" "`${1 + 2}`" "expected" "3"}
+ {"src" "` ${1 + 2} ${1 + 2} `" "expected" " 3 3 "}
+ {"src" "`${1 + 2} ${1 + 2} `" "expected" "3 3 "}
+ {"src" "`${1 + 2}${1 + 2} `" "expected" "33 "}
+ {"src" "`${1 + 2} ${1 + 2}`" "expected" "3 3"}
+ {"src" "`${record.name}
`" "expected" "John Connor
"}
+ {"src" "`https://${foo}`" "expected" "https://bar" "locals" {"foo" "bar"}}
+ {"src" "foo" "expected" 42 "locals" {"foo" 42}}
+ {"src" "'foo' : String" "expected" "foo"}
+ {"src" "null : String" "expected" nil}
+ {"src" "true : String" "expected" 0}
+ {"src" "'foo' : String!" "expected" "foo"}
+ {"src" "null : String!" "expected" 0}
))