Skip to content

Instantly share code, notes, and snippets.

@zoffixznet
Created December 3, 2016 14:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zoffixznet/4e60c7d298c410f8770cb6565d0ff9d5 to your computer and use it in GitHub Desktop.
Save zoffixznet/4e60c7d298c410f8770cb6565d0ff9d5 to your computer and use it in GitHub Desktop.
use Test;
subtest 'numeric literals as type constraints' => {
subtest 'integers' => {
eval-lives-ok 「sub f( 42){}( 42)」, 'bare';
eval-lives-ok 「sub f(+42){}(+42)」, 'plus';
eval-lives-ok 「sub f(-42){}(-42)」, 'minus';
eval-lives-ok 「sub f(−42){}(−42)」, 'U+2212 minus';
}
subtest 'rats' => {
eval-lives-ok 「sub f( <1/2>){}( .5) 」, 'bare </> literal';
eval-lives-ok 「sub f(<-1/2>){}(-.5) 」, 'minus </> literal';
eval-lives-ok 「sub f(<−1/2>){}(-.5) 」, 'U+2212 minus </> literal';
eval-lives-ok 「sub f( 1.5){}( 1.5)」, 'bare \d.\d literal';
eval-lives-ok 「sub f( -1.5){}(-1.5)」, 'minus \d.\d literal';
eval-lives-ok 「sub f( −1.5){}(-1.5)」, 'U+2212 minus \d.\d literal';
}
subtest 'nums' => {
eval-lives-ok 「sub f( 1e2 ){}( 1e2 )」, 'bare';
eval-lives-ok 「sub f(-1e2 ){}(-1e2 )」, 'minus (base)';
eval-lives-ok 「sub f(−1e2 ){}(-1e2 )」, 'U+2212 minus (base)';
eval-lives-ok 「sub f( 1e+2){}( 1e2 )」, 'bare (plus exp)';
eval-lives-ok 「sub f(-1e+2){}(-1e2 )」, 'minus (base) (plus exp)';
eval-lives-ok 「sub f(−1e+2){}(-1e2 )」, 'U+2212 minus (base) (plus exp)';
eval-lives-ok 「sub f( 1e-2){}( 1e-2)」, 'minus (exp)';
eval-lives-ok 「sub f( 1e−2){}( 1e−2)」, 'U+2212 minus (exp)';
eval-lives-ok 「sub f(-1e-2){}(-1e-2)」, 'minus (base and exp)';
eval-lives-ok 「sub f(−1e−2){}(-1e-2)」, 'U+2212 minus (base and exp)';
}
subtest 'complex' => {
eval-lives-ok 「sub f( <1+2i>){}( 1+2i)」, 'bare';
eval-lives-ok 「sub f(<-1+2i>){}(-1+2i)」, 'minus (real)';
eval-lives-ok 「sub f(<−1+2i>){}(-1+2i)」, 'U+2212 minus (real)';
eval-lives-ok 「sub f( <1-2i>){}( 1-2i)」, 'minus (imaginary)';
eval-lives-ok 「sub f( <1−2i>){}( 1−2i)」, 'U+2212 minus (imaginary)';
eval-lives-ok 「sub f(<-1-2i>){}(-1-2i)」, 'minus (real and imaginary)';
eval-lives-ok 「sub f(<−1−2i>){}(-1-2i)」, 'U+2212 minus (real and imagin.)';
}
subtest 'infinity' => {
eval-lives-ok 「sub f( Inf){}( Inf)」, 'bare Inf';
eval-lives-ok 「sub f(+Inf){}( Inf)」, 'plus Inf';
eval-lives-ok 「sub f(-Inf){}(-Inf)」, 'minus Inf';
eval-lives-ok 「sub f(−Inf){}(-Inf)」, 'U+2212 minus Inf';
eval-lives-ok 「sub f( ∞){}( Inf)」, 'bare ∞';
eval-lives-ok 「sub f( +∞){}( Inf)」, 'plus ∞';
eval-lives-ok 「sub f( -∞){}(-Inf)」, 'minus ∞';
eval-lives-ok 「sub f( −∞){}(-Inf)」, 'U+2212 minus ∞';
}
subtest 'NaN' => {
eval-lives-ok 「sub f(NaN){}(NaN)」, 'bare';
}
subtest 'π' => {
eval-lives-ok 「sub f( π){}( π)」, 'bare, π';
eval-lives-ok 「sub f( +π){}( π)」, 'plus, π';
eval-lives-ok 「sub f( -π){}(-π)」, 'minus, π';
eval-lives-ok 「sub f( −π){}(-π)」, 'U+2212 minus, π';
eval-lives-ok 「sub f( pi){}( π)」, 'bare, pi';
eval-lives-ok 「sub f(+pi){}( π)」, 'plus, pi';
eval-lives-ok 「sub f(-pi){}(-π)」, 'minus, pi';
eval-lives-ok 「sub f(−pi){}(-π)」, 'U+2212 minus, pi';
}
subtest 'τ' => {
eval-lives-ok 「sub f( τ){}( τ)」, 'bare, τ';
eval-lives-ok 「sub f( +τ){}( τ)」, 'plus, τ';
eval-lives-ok 「sub f( -τ){}(-τ)」, 'minus, τ';
eval-lives-ok 「sub f( −τ){}(-τ)」, 'U+2212 minus, τ';
eval-lives-ok 「sub f( tau){}( τ)」, 'bare, tau';
eval-lives-ok 「sub f(+tau){}( τ)」, 'plus, tau';
eval-lives-ok 「sub f(-tau){}(-τ)」, 'minus, tau';
eval-lives-ok 「sub f(−tau){}(-τ)」, 'U+2212 minus, tau';
}
subtest '𝑒' => {
eval-lives-ok 「sub f( 𝑒){}( 𝑒)」, 'bare, 𝑒';
eval-lives-ok 「sub f(+𝑒){}( 𝑒)」, 'plus, 𝑒';
eval-lives-ok 「sub f(-𝑒){}(-𝑒)」, 'minus, 𝑒';
eval-lives-ok 「sub f(−𝑒){}(-𝑒)」, 'U+2212 minus, 𝑒';
eval-lives-ok 「sub f( e){}( 𝑒)」, 'bare, e';
eval-lives-ok 「sub f(+e){}( 𝑒)」, 'plus, e';
eval-lives-ok 「sub f(-e){}(-𝑒)」, 'minus, e';
eval-lives-ok 「sub f(−e){}(-𝑒)」, 'U+2212 minus, e';
}
}
done-testing;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment