JE
view release on metacpan or search on metacpan
t/11.01-primary-expressions.t view on Meta::CPAN
#!perl -T
BEGIN { require './t/test.pl' }
use Test::More tests => 74;
use strict;
use utf8;
# Test 1: See if the module loads
BEGIN { use_ok('JE') };
my $j = new JE;
# Tests 2-3: Bind the ok and diag functions
isa_ok( $j->new_function( ok => \&ok ), 'JE::Object::Function' );
isa_ok( $j->new_function( diag => \&diag ), 'JE::Object::Function' );
$j->prop(global => $j);
# Run JS tests
my $line = __LINE__+3; # If I put this on the next line, it gives the last
# line of the here-doc (or something like that).
defined $j->eval( <<'--end--', __FILE__, $line ) or die;
// ===================================================
// 11.1.1 this (not that)
// ===================================================
/* Tests 4-7 */
ok(global === this, '\'this\' keyword in global code')
eval("ok(global === this, '\\'this\\' keyword in global-eval code')")
obj = { f: function() {
ok(this === obj, '\'this\' keyword in function code')
eval("ok(this === obj, '\\'this\\' keyword in function-eval code')"
)
} }
obj.f()
// ===================================================
// 11.1.2 Identifiers
// ===================================================
// (identifier resolution is defined in 10.1.4)
/* Test 8 */
var error
try {
NaN = 333
eval('NaN = 323'),
pfpf = 3289
eval('onetoh = 389')
function(a) {
tht =3
a= 3
eval('thteoe = 3; a = 1')
}()
}
catch(e) { error = true }
ok(!error, 'The result of evalling an identifier is always an lvalue')
// ===================================================
// 11.1.3 Array literals
// ===================================================
/* Tests 9-60 */
a = []
ok(a.length === 0, '[]')
a = [,]
ok(a.length === 1 && !('0' in a), '[,]')
a = [, ,]
ok(a.length === 2 && !('0' in a) && !('1' in a), '[, ,]')
a = [1]
ok(a.length === 1 && a[0] === 1, '[ expr ]')
a = [1,2]
ok(a.length === 2 && a[0] === 1 && a[1] === 2, '[ expr, expr ]')
a = [1, , 2]
ok(a.length === 3 && a[0] === 1 && !('1' in a) && a[2] === 2,
'[ expr, , expr ]')
a = [1, ,, 2]
ok(a.length === 4 && a[0] === 1 && !('1' in a) && !('2' in a) &&
a[3] === 2, '[ expr, ,, expr ]')
a = [, 1]
ok(a.length === 2 && !('0' in a) && a[1] === 1, '[ , expr ]')
a = [, 1, 2]
ok(a.length === 3 && !('0' in a) && a[1] === 1 && a[2] === 2,
'[ , expr, expr ]')
a = [, 1, , 2]
ok(a.length === 4 && !('0' in a) && a[1] === 1 && !('2' in a) &&
a[3] === 2, '[ , expr, , expr ]')
a = [, 1, ,, 2]
ok(a.length === 5 && !('0' in a) && a[1] === 1 && !('2' in a) &&
!('3' in a) && a[4] === 2, '[ , expr, ,, expr ]')
a = [,, 1]
ok(a.length === 3 && !('0' in a) && !('1' in a) && a[2] === 1,
'[ ,, expr ]')
a = [,, 1, 2]
ok(a.length === 4 && !('0' in a) && !('1' in a) && a[2] === 1 &&
a[3] === 2, '[ ,, expr, expr ]')
a = [,, 1, , 2]
ok(a.length === 5 && !('0' in a) && !('1' in a) && a[2] === 1 &&
!('3' in a) && a[4] === 2, '[ ,, expr, , expr ]')
a = [,, 1, ,, 2]
ok(a.length === 6 && !('0' in a) && !('1' in a) && a[2] === 1 &&
!('3' in a) && !('4' in a) && a[5] === 2, '[ ,, expr, ,, expr ]')
a = [1,]
ok(a.length === 1 && a[0] === 1, '[ expr, ]')
a = [1, 2,]
( run in 1.599 second using v1.01-cache-2.11-cpan-364913b4093 )