Skip to content

Instantly share code, notes, and snippets.

@zoffixznet
Created November 16, 2016 20:58
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/bc223e44108e4649cad016e27165d4fe to your computer and use it in GitHub Desktop.
Save zoffixznet/bc223e44108e4649cad016e27165d4fe to your computer and use it in GitHub Desktop.
cpan@perlbuild2~/CPANPRC/rakudo (nom)$ cd t/spec/; gd; cd ../../; 6p t/spec/S32-str/parse-base.t
diff --git a/S32-str/parse-base.t b/S32-str/parse-base.t
index 34431fa..9edbbde 100644
--- a/S32-str/parse-base.t
+++ b/S32-str/parse-base.t
@@ -13,7 +13,7 @@ constant $all-chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm'
constant $all-chars-result = 2527079815159757168093382078421796304289747094823514859938627964591248797616216274592478001915.000816326530612244738449589931406080722808837890625;
subtest '.parse-base() as method' => {
- plan 45;
+ plan 48;
is-deeply 'Perl6' .parse-base(30), 20652936, '"Perl6" in base-30';
is-approx 'Perl.6'.parse-base(32), 834421.1875, '"Perl.6" in base-32';
@@ -24,6 +24,10 @@ subtest '.parse-base() as method' => {
is-approx $all-chars.parse-base(36), $all-chars-result,
'full character set';
+ is-deeply '-FF'.parse-base(16), -255, 'can parse - sign';
+ is-deeply '−FF'.parse-base(16), -255, 'can parse − sign';
+ is-deeply '+FF'.parse-base(16), 255, 'can parse + sign';
+
#?rakudo.jvm todo 'Invalid base-10 character'
is-deeply $fancy-nums.parse-base(10), $fancy-nums-value,
'can parse fancy Unicode numerals as Int';
@@ -55,7 +59,7 @@ subtest '.parse-base() as method' => {
}
subtest 'parse-base() as sub' => {
- plan 45;
+ plan 48;
is-deeply parse-base('Perl6', 30), 20652936, '"Perl6" in base-30';
is-approx parse-base('Perl.6', 32), 834421.1875, '"Perl.6" in base-32';
@@ -66,6 +70,10 @@ subtest 'parse-base() as sub' => {
is-approx parse-base($all-chars, 36), $all-chars-result,
'full character set';
+ is-deeply parse-base('-FF', 16), -255, 'can parse - sign';
+ is-deeply parse-base('−FF', 16), -255, 'can parse − sign';
+ is-deeply parse-base('+FF', 16), 255, 'can parse + sign';
+
#?rakudo.jvm todo 'Invalid base-10 character'
is-deeply parse-base($fancy-nums, 10), $fancy-nums-value,
'can parse fancy Unicode numerals as Int';
t/spec/S32-str/parse-base.t ..
1..2
1..48
ok 1 - "Perl6" in base-30
ok 2 - "Perl.6" in base-32
ok 3 - 1111 in base-2
ok 4 - 1111 in base-3
ok 5 - 1111 in base-4
ok 6 - 1111 in base-5
ok 7 - 1111 in base-6
ok 8 - 1111 in base-7
ok 9 - 1111 in base-8
ok 10 - 1111 in base-9
ok 11 - 1111 in base-10
ok 12 - 1111 in base-11
ok 13 - 1111 in base-12
ok 14 - 1111 in base-13
ok 15 - 1111 in base-14
ok 16 - 1111 in base-15
ok 17 - 1111 in base-16
ok 18 - 1111 in base-17
ok 19 - 1111 in base-18
ok 20 - 1111 in base-19
ok 21 - 1111 in base-20
ok 22 - 1111 in base-21
ok 23 - 1111 in base-22
ok 24 - 1111 in base-23
ok 25 - 1111 in base-24
ok 26 - 1111 in base-25
ok 27 - 1111 in base-26
ok 28 - 1111 in base-27
ok 29 - 1111 in base-28
ok 30 - 1111 in base-29
ok 31 - 1111 in base-30
ok 32 - 1111 in base-31
ok 33 - 1111 in base-32
ok 34 - 1111 in base-33
ok 35 - 1111 in base-34
ok 36 - 1111 in base-35
ok 37 - 1111 in base-36
ok 38 - full character set
ok 39 - can parse - sign
ok 40 - can parse − sign
ok 41 - can parse + sign
ok 42 - can parse fancy Unicode numerals as Int
ok 43 - can parse fancy Unicode numerals as float
1..3
ok 1 - code dies
ok 2 - right exception type (X::Syntax::Number::RadixOutOfRange)
ok 3 - .radix matches 42
ok 44 - too large radix throws
1..3
ok 1 - code dies
ok 2 - right exception type (X::Syntax::Number::RadixOutOfRange)
ok 3 - .radix matches 1
ok 45 - too small radix throws
1..5
ok 1 - code dies
ok 2 - right exception type (X::Syntax::Number::InvalidCharacter)
ok 3 - .pos matches 0
ok 4 - .str matches \#\#\#
ok 5 - .radix matches 20
ok 46 - invalid char at first position, base 20
1..5
ok 1 - code dies
ok 2 - right exception type (X::Syntax::Number::InvalidCharacter)
ok 3 - .pos matches 3
ok 4 - .str matches 1238321
ok 5 - .radix matches 8
ok 47 - invalid char in middle position, base 8
1..5
ok 1 - code dies
ok 2 - right exception type (X::Syntax::Number::InvalidCharacter)
ok 3 - .pos matches 2
ok 4 - .str matches 124
ok 5 - .radix matches 4
ok 48 - invalid char at last position, base 4
ok 1 - .parse-base() as method
1..48
ok 1 - "Perl6" in base-30
ok 2 - "Perl.6" in base-32
ok 3 - 1111 in base-2
ok 4 - 1111 in base-3
ok 5 - 1111 in base-4
ok 6 - 1111 in base-5
ok 7 - 1111 in base-6
ok 8 - 1111 in base-7
ok 9 - 1111 in base-8
ok 10 - 1111 in base-9
ok 11 - 1111 in base-10
ok 12 - 1111 in base-11
ok 13 - 1111 in base-12
ok 14 - 1111 in base-13
ok 15 - 1111 in base-14
ok 16 - 1111 in base-15
ok 17 - 1111 in base-16
ok 18 - 1111 in base-17
ok 19 - 1111 in base-18
ok 20 - 1111 in base-19
ok 21 - 1111 in base-20
ok 22 - 1111 in base-21
ok 23 - 1111 in base-22
ok 24 - 1111 in base-23
ok 25 - 1111 in base-24
ok 26 - 1111 in base-25
ok 27 - 1111 in base-26
ok 28 - 1111 in base-27
ok 29 - 1111 in base-28
ok 30 - 1111 in base-29
ok 31 - 1111 in base-30
ok 32 - 1111 in base-31
ok 33 - 1111 in base-32
ok 34 - 1111 in base-33
ok 35 - 1111 in base-34
ok 36 - 1111 in base-35
ok 37 - 1111 in base-36
ok 38 - full character set
not ok 39 - can parse - sign
# Failed test 'can parse - sign'
# at t/spec/S32-str/parse-base.t line 73
# expected: -255
# got: 255
not ok 40 - can parse − sign
# Failed test 'can parse − sign'
# at t/spec/S32-str/parse-base.t line 74
# expected: -255
# got: 255
ok 41 - can parse + sign
ok 42 - can parse fancy Unicode numerals as Int
ok 43 - can parse fancy Unicode numerals as float
1..3
ok 1 - code dies
ok 2 - right exception type (X::Syntax::Number::RadixOutOfRange)
ok 3 - .radix matches 42
ok 44 - too large radix throws
1..3
ok 1 - code dies
ok 2 - right exception type (X::Syntax::Number::RadixOutOfRange)
ok 3 - .radix matches 1
ok 45 - too small radix throws
1..5
ok 1 - code dies
ok 2 - right exception type (X::Syntax::Number::InvalidCharacter)
ok 3 - .pos matches 0
ok 4 - .str matches \#\#\#
ok 5 - .radix matches 20
ok 46 - invalid char at first position, base 20
1..5
ok 1 - code dies
ok 2 - right exception type (X::Syntax::Number::InvalidCharacter)
ok 3 - .pos matches 3
ok 4 - .str matches 1238321
ok 5 - .radix matches 8
ok 47 - invalid char in middle position, base 8
1..5
ok 1 - code dies
ok 2 - right exception type (X::Syntax::Number::InvalidCharacter)
ok 3 - .pos matches 2
ok 4 - .str matches 124
ok 5 - .radix matches 4
ok 48 - invalid char at last position, base 4
# Looks like you failed 2 tests of 48
not ok 2 - parse-base() as sub
# Failed test 'parse-base() as sub'
# at t/spec/S32-str/parse-base.t line 61
# Looks like you failed 1 test of 2
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/2 subtests
Test Summary Report
-------------------
t/spec/S32-str/parse-base.t (Wstat: 256 Tests: 2 Failed: 1)
Failed test: 2
Non-zero exit status: 1
Files=1, Tests=2, 0 wallclock secs ( 0.03 usr 0.00 sys + 0.36 cusr 0.02 csys = 0.41 CPU)
Result: FAIL
cpan@perlbuild2~/CPANPRC/rakudo (nom)$ ./perl6 -e 'use Test; is-deeply parse-base("−FF", 16), -255, "can parse − sign";'
ok 1 - can parse − sign
cpan@perlbuild2~/CPANPRC/rakudo (nom)$ ./perl6 -e 'use Test; is-deeply parse-base("-FF", 16), -255, "can parse - sign";'
ok 1 - can parse - sign
cpan@perlbuild2~/CPANPRC/rakudo (nom)$
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment