Example #1
0
	def test_arguments(self):
		self.assertEqual(run("(function () {return arguments.length})(1, 2)"), 2)
		self.assertEqual(run("(function () {return arguments[1]})(1, 2)"), 2)
		self.assertEqual(run("Object.prototype.a = 1;(function () {return arguments})(2).a"), 1)

		global_object = GlobalObject()
		self.assertEqual(run("function a () { return arguments.callee; }; a()", global_object), run("a", global_object))
Example #2
0
	def testPrecedence(self):
		global_object = GlobalObject()
		run(self.js, global_object)

		self.assertEqual(run("a(0,0)", global_object), 3);
		self.assertEqual(run("b(0,0)", global_object), 2);
		self.assertEqual(run("c(0,0)", global_object), 3);
Example #3
0
	def test_decleration(self):
		global_object = GlobalObject()
		run("function a (a) { return a; }", global_object)
		function = run("a", global_object)
		self.assert_(function)
		self.assertEqual(run("a(1)", global_object), 1)
		self.assertEqual(run("a", global_object), function)
Example #4
0
	def test_empty_switch(self):
		js = """
// empty switch: make sure expression is evaluated
var se = 0;
switch (se = 1) {
}
"""
		global_object = GlobalObject()
		run(js, global_object)
		self.assertEquals(run("se", global_object), 1)
Example #5
0
	def test_only_default(self):
		js = """
// only default
se = 0;
switch (se) {
default:
  se = 1;
}
"""
		global_object = GlobalObject()
		run(js, global_object)
		self.assertEquals(run("se", global_object), 1)
Example #6
0
	def test_for_in(self):
		self.assertEqual(run(
			"""var a = {a:1,b:2,c:3}, s = '';
			for (var key in a) { s = s + key; }"""), 'abc')
		self.assertEqual(run(
			"""var a = {a:1,b:2,c:3}, s = '';
			for (key in a) { s = s + key; }"""), 'abc')

		self.assertEqual(run(
			"""var a = {}; Object.prototype.a = 1; a.b = 1;
			Object.prototype.c = 1; a.d = 1; var s = '';
			for (var key in a) { s = s + key; }"""), 'bdac')
Example #7
0
	def test_break_for_loop(self):
		js = """
// in loop, break should only break out of switch
se = 0;
for (var i=0; i < 2; i++) {
  switch (i) {
  case 0:
  case 1:
    break;
  }
  se = 1;
}
"""
		global_object = GlobalObject()
		run(js, global_object)
		self.assertEquals(run("se", global_object), 1)
Example #8
0
	def test_switch_fallthrough2(self):
		js = """
// test "fall through"
se = 0;
i = 0;
switch (i) {
case 0:
  se++;
  /* fall through */
case 1:
  se++;
  break;
}
"""
		global_object = GlobalObject()
		run(js, global_object)
		self.assertEquals(run("se", global_object), 2)
Example #9
0
	def test_return_in_switch(self):
		js = """
// test defaults not at the end; regression test for a bug that
// nearly made it into 4.06
function f0(i) {
  switch(i) {
  default:
  case "a":
  case "b":
    return "ab*"
      case "c":
    return "c";
  case "d":
    return "d";
  }
  return "";
}
"""
		global_object = GlobalObject()
		run(js, global_object)
		self.assertEquals(run("f0('a')", global_object), 'ab*')
		self.assertEquals(run("f0('b')", global_object), 'ab*')
		self.assertEquals(run("f0('*')", global_object), 'ab*')
		self.assertEquals(run("f0('c')", global_object), 'c')
		self.assertEquals(run("f0('d')", global_object), 'd')
Example #10
0
	def test_call(self):
		self.assertEqual(run("function a(){return 1};a.call()"), 1)
		self.assertEqual(run("function a(){return 1};a.call(a)"), 1)
		self.assertEqual(run("function a(){return 1};a.call.call(a)"), 1)
		self.assertEqual(run("function a(){return arguments.length};a.call()"), 0)
		self.assertEqual(run("function a(){return arguments.length};a.call(a)"), 0)
		self.assertEqual(run("function a(){return arguments.length};a.call(a, 2)"), 1)
		self.assertEqual(run("function a(){return arguments.length};a.call(a, 2, 4)"), 2)
Example #11
0
def main(argv):
    if not len(argv) == 2:
        print __doc__
        return 1

    filename = argv[1]
    f = open_file_as_stream(filename)
    source = f.readall()
    f.close()

    return run(source, filename=filename)
Example #12
0
 def test_substr(self):
     self.assertEqual(run("'test'.substr(1,2)"), "es")
     self.assertEqual(run("'test'.substr(0,6)"), "test")
     self.assertEqual(run("'test'.substr(-3,1)"), "e")
     self.assertEqual(run("'test'.substr(2,4)"), "st")
     self.assertEqual(run("'test'.substr(3)"), "t")
     self.assertEqual(run("'test'.substr()"), "test")
Example #13
0
	def test_switch_fallthrough(self):
		js =  """
var var1 = "match string";
var match1 = false;
var match2 = false;
var match3 = false;

switch (var1)
{
case "match string":
  match1 = true;
case "bad string 1":
  match2 = true;
  break;
case "bad string 2":
  match3 = true;
}
"""
		global_object = GlobalObject()
		run(js, global_object)
		self.assertEquals(run("match1", global_object), True)
		self.assertEquals(run("match2", global_object), True)
		self.assertEquals(run("match3", global_object), False)
Example #14
0
	def test_nested_switch(self):
		js = """
var var2 = 3;

var match1 = false;
var match2 = false;
var match3 = false;
var match4 = false;
var match5 = false;

switch (var2)
{
case 1:
  switch (var1)
  {
  case "foo":
  match1 = true;
  break;
  case 3:
  match2 = true;
  break;
  }
  match3 = true;
  break;
case 2:
  match4 = true;
  break;
case 3:
  match5 = true;
  break;
}
"""
		global_object = GlobalObject()
		run(js, global_object)
		self.assertEquals(run("match1", global_object), False)
		self.assertEquals(run("match2", global_object), False)
		self.assertEquals(run("match3", global_object), False)
		self.assertEquals(run("match4", global_object), False)
		self.assertEquals(run("match5", global_object), True)
Example #15
0
	def test_return_in_switch2(self):
		js = """
function f1(i) {
  switch(i) {
  case "a":
  case "b":
  default:
    return "ab*"
      case "c":
    return "c";
  case "d":
    return "d";
  }
  return "";
}
"""
		global_object = GlobalObject()
		run(js, global_object)
		self.assertEquals(run("f1('a')", global_object), 'ab*')
		self.assertEquals(run("f1('b')", global_object), 'ab*')
		self.assertEquals(run("f1('*')", global_object), 'ab*')
		self.assertEquals(run("f1('c')", global_object), 'c')
		self.assertEquals(run("f1('d')", global_object), 'd')
Example #16
0
	def test_switch_on_integer(self):
		js = """
function f2(i) {
  switch (i) {
  case 0:
  case 1:
    return 1;
  case 2:
    return 2;
  }
  // with no default, control will fall through
  return 3;
}
"""
		global_object = GlobalObject()
		run(js, global_object)
		self.assertEquals(run("f2(0)", global_object), 1)
		self.assertEquals(run("f2(1)", global_object), 1)
		self.assertEquals(run("f2(2)", global_object), 2)
		self.assertEquals(run("f2(3)", global_object), 3)
Example #17
0
 def test_charCodeAt(self):
     self.assert_(math.isnan(run("'test'.charCodeAt(5)")))
     self.assert_(math.isnan(run("'test'.charCodeAt(-1)")))
     self.assertEqual(run("'test'.charCodeAt(0)"), 116)
     self.assertEqual(run("'test'.charCodeAt(2)"), 115)
     self.assertEqual(run("'test'.charCodeAt()"), 116)
Example #18
0
	def testDelete(self):
		self.assertEqual(run("delete undefined"), False)
		self.assertEqual(run("delete undefined; undefined"), None)
		self.assertEqual(run("delete String"), True)
		#self.assertRaises(Exception, run, "delete String; String")
		self.assertEqual(run("a={a:1}; delete a.a; 'a' in a"), False)
Example #19
0
	def test_for_loop(self):
		self.assertEqual(run(
			'for (var i = 0; i < 10; i = i + 1) ; i'), 10)
Example #20
0
	def test_isNaN(self):
		self.assertEqual(run("isNaN(0)"), False)
		self.assertEqual(run("isNaN(NaN)"), True)
		self.assertEqual(run("isNaN(Infinity)"), False)
Example #21
0
	def test_isFinite(self):
		self.assertEqual(run("isFinite(0)"), True)
		self.assertEqual(run("isFinite(NaN)"), False)
		self.assertEqual(run("isFinite(Infinity)"), False)
		self.assertEqual(run("isFinite(-Infinity)"), False)
Example #22
0
 def test_String(self):
     self.assertEqual(run("String(true)"), "true")
     self.assertEqual(run("String(false)"), "false")
     self.assertEqual(run("String('test')"), "test")
     self.assertEqual(run("String(NaN)"), "NaN")
     self.assertEqual(run("String(Infinity)"), "Infinity")
     self.assertEqual(run("String(null)"), "null")
     self.assertEqual(run("String(undefined)"), "undefined")
     self.assertEqual(run("String(+0)"), "0")
     self.assertEqual(run("String(-0)"), "0")
     self.assertEqual(run("String(1)"), "1")
     self.assertEqual(run("String(-2.3)"), "-2.3")
Example #23
0
	def test_expression(self):
		global_object = GlobalObject()
		run("var b = function a () { return a; }", global_object)
		#self.assertRaises(Exception, run, "a", object)
		self.assertEqual(run("b", global_object), run("b()", global_object))