Add a test for `propertyIsEnumerable`.

This commit is contained in:
David Wendt 2020-03-07 20:17:07 -05:00
parent 2afbcf450a
commit dc0cb00a03
5 changed files with 280 additions and 0 deletions

View File

@ -242,6 +242,7 @@ swf_tests! {
(as3_class_enumeration, "avm2/class_enumeration", 1),
(as3_is_prototype_of, "avm2/is_prototype_of", 1),
(as3_has_own_property, "avm2/has_own_property", 1),
(as3_property_is_enumerable, "avm2/property_is_enumerable", 1),
}
// TODO: These tests have some inaccuracies currently, so we use approx_eq to test that numeric values are close enough.

View File

@ -0,0 +1,177 @@
package {
public class Test {}
}
class ES4Class extends Object {
public var test_var = "var";
public const test_const = "const";
public function test_function() {
trace("test_function");
}
public function get test_virt() {
return "test_virt";
}
public function set test_virt(val) {
trace("test_virt");
}
public static var test_static_var = "var";
public static const test_static_const = "const";
public static function test_static_function() {
trace("test_static_function");
}
public static function get test_static_virt() {
return "test_static_virt";
}
public static function set test_static_virt(val) {
trace("test_static_virt");
}
private var test_private_var = "private_var";
private const test_private_const = "private_const";
private function test_private_function() {
trace("test_private_function");
}
private function get test_private_virt() {
return "test_private_virt";
}
private function set test_private_virt(val) {
trace("test_private_virt");
}
}
function ES3Class() {
this.test_var = "var";
}
ES3Class.test_static_var = "var";
ES3Class.test_static_function = function () {
trace("test_static_function");
}
ES3Class.prototype.test_function = function() {
trace("test_function");
}
ES3Class.prototype.test_proto = "proto_var";
var es4inst = new ES4Class();
var es3inst = new ES3Class();
trace("//es4inst.propertyIsEnumerable('test_var')");
trace(es4inst.propertyIsEnumerable('test_var'));
trace("//es4inst.propertyIsEnumerable('test_const')");
trace(es4inst.propertyIsEnumerable('test_const'));
trace("//es4inst.propertyIsEnumerable('test_function')");
trace(es4inst.propertyIsEnumerable('test_function'));
trace("//es4inst.propertyIsEnumerable('test_virt')");
trace(es4inst.propertyIsEnumerable('test_virt'));
trace("//es4inst.propertyIsEnumerable('test_static_var')");
trace(es4inst.propertyIsEnumerable('test_static_var'));
trace("//es4inst.propertyIsEnumerable('test_static_const')");
trace(es4inst.propertyIsEnumerable('test_static_const'));
trace("//es4inst.propertyIsEnumerable('test_static_function')");
trace(es4inst.propertyIsEnumerable('test_static_function'));
trace("//es4inst.propertyIsEnumerable('test_static_virt')");
trace(es4inst.propertyIsEnumerable('test_static_virt'));
trace("//es4inst.propertyIsEnumerable('test_private_var')");
trace(es4inst.propertyIsEnumerable('test_private_var'));
trace("//es4inst.propertyIsEnumerable('test_private_const')");
trace(es4inst.propertyIsEnumerable('test_private_const'));
trace("//es4inst.propertyIsEnumerable('test_private_function')");
trace(es4inst.propertyIsEnumerable('test_private_function'));
trace("//es4inst.propertyIsEnumerable('test_private_virt')");
trace(es4inst.propertyIsEnumerable('test_private_virt'));
trace("//ES4Class.propertyIsEnumerable('test_var')");
trace(ES4Class.propertyIsEnumerable('test_var'));
trace("//ES4Class.propertyIsEnumerable('test_const')");
trace(ES4Class.propertyIsEnumerable('test_const'));
trace("//ES4Class.propertyIsEnumerable('test_function')");
trace(ES4Class.propertyIsEnumerable('test_function'));
trace("//ES4Class.propertyIsEnumerable('test_virt')");
trace(ES4Class.propertyIsEnumerable('test_virt'));
trace("//ES4Class.propertyIsEnumerable('test_static_var')");
trace(ES4Class.propertyIsEnumerable('test_static_var'));
trace("//ES4Class.propertyIsEnumerable('test_static_const')");
trace(ES4Class.propertyIsEnumerable('test_static_const'));
trace("//ES4Class.propertyIsEnumerable('test_static_function')");
trace(ES4Class.propertyIsEnumerable('test_static_function'));
trace("//ES4Class.propertyIsEnumerable('test_static_virt')");
trace(ES4Class.propertyIsEnumerable('test_static_virt'));
trace("//ES4Class.propertyIsEnumerable('test_private_var')");
trace(ES4Class.propertyIsEnumerable('test_private_var'));
trace("//ES4Class.propertyIsEnumerable('test_private_const')");
trace(ES4Class.propertyIsEnumerable('test_private_const'));
trace("//ES4Class.propertyIsEnumerable('test_private_function')");
trace(ES4Class.propertyIsEnumerable('test_private_function'));
trace("//ES4Class.propertyIsEnumerable('test_private_virt')");
trace(ES4Class.propertyIsEnumerable('test_private_virt'));
trace("//ES4Class.prototype.propertyIsEnumerable('test_var')");
trace(ES4Class.prototype.propertyIsEnumerable('test_var'));
trace("//ES4Class.prototype.propertyIsEnumerable('test_const')");
trace(ES4Class.prototype.propertyIsEnumerable('test_const'));
trace("//ES4Class.prototype.propertyIsEnumerable('test_function')");
trace(ES4Class.prototype.propertyIsEnumerable('test_function'));
trace("//ES4Class.prototype.propertyIsEnumerable('test_virt')");
trace(ES4Class.prototype.propertyIsEnumerable('test_virt'));
trace("//ES4Class.prototype.propertyIsEnumerable('test_static_var')");
trace(ES4Class.prototype.propertyIsEnumerable('test_static_var'));
trace("//ES4Class.prototype.propertyIsEnumerable('test_static_const')");
trace(ES4Class.prototype.propertyIsEnumerable('test_static_const'));
trace("//ES4Class.prototype.propertyIsEnumerable('test_static_function')");
trace(ES4Class.prototype.propertyIsEnumerable('test_static_function'));
trace("//ES4Class.prototype.propertyIsEnumerable('test_static_virt')");
trace(ES4Class.prototype.propertyIsEnumerable('test_static_virt'));
trace("//ES4Class.prototype.propertyIsEnumerable('test_private_var')");
trace(ES4Class.prototype.propertyIsEnumerable('test_private_var'));
trace("//ES4Class.prototype.propertyIsEnumerable('test_private_const')");
trace(ES4Class.prototype.propertyIsEnumerable('test_private_const'));
trace("//ES4Class.prototype.propertyIsEnumerable('test_private_function')");
trace(ES4Class.prototype.propertyIsEnumerable('test_private_function'));
trace("//ES4Class.prototype.propertyIsEnumerable('test_private_virt')");
trace(ES4Class.prototype.propertyIsEnumerable('test_private_virt'));
trace("//es3inst.propertyIsEnumerable('test_var')");
trace(es3inst.propertyIsEnumerable('test_var'));
trace("//es3inst.propertyIsEnumerable('test_function')");
trace(es3inst.propertyIsEnumerable('test_function'));
trace("//es3inst.propertyIsEnumerable('test_proto')");
trace(es3inst.propertyIsEnumerable('test_proto'));
trace("//es3inst.propertyIsEnumerable('test_static_var')");
trace(es3inst.propertyIsEnumerable('test_static_var'));
trace("//es3inst.propertyIsEnumerable('test_static_function')");
trace(es3inst.propertyIsEnumerable('test_static_function'));
trace("//ES3Class.propertyIsEnumerable('test_var')");
trace(ES3Class.propertyIsEnumerable('test_var'));
trace("//ES3Class.propertyIsEnumerable('test_function')");
trace(ES3Class.propertyIsEnumerable('test_function'));
trace("//ES3Class.propertyIsEnumerable('test_proto')");
trace(ES3Class.propertyIsEnumerable('test_proto'));
trace("//ES3Class.propertyIsEnumerable('test_static_var')");
trace(ES3Class.propertyIsEnumerable('test_static_var'));
trace("//ES3Class.propertyIsEnumerable('test_static_function')");
trace(ES3Class.propertyIsEnumerable('test_static_function'));
trace("//ES3Class.prototype.propertyIsEnumerable('test_var')");
trace(ES3Class.prototype.propertyIsEnumerable('test_var'));
trace("//ES3Class.prototype.propertyIsEnumerable('test_function')");
trace(ES3Class.prototype.propertyIsEnumerable('test_function'));
trace("//ES3Class.prototype.propertyIsEnumerable('test_proto')");
trace(ES3Class.prototype.propertyIsEnumerable('test_proto'));
trace("//ES3Class.prototype.propertyIsEnumerable('test_static_var')");
trace(ES3Class.prototype.propertyIsEnumerable('test_static_var'));
trace("//ES3Class.prototype.propertyIsEnumerable('test_static_function')");
trace(ES3Class.prototype.propertyIsEnumerable('test_static_function'));

View File

@ -0,0 +1,102 @@
//es4inst.propertyIsEnumerable('test_var')
false
//es4inst.propertyIsEnumerable('test_const')
false
//es4inst.propertyIsEnumerable('test_function')
false
//es4inst.propertyIsEnumerable('test_virt')
false
//es4inst.propertyIsEnumerable('test_static_var')
false
//es4inst.propertyIsEnumerable('test_static_const')
false
//es4inst.propertyIsEnumerable('test_static_function')
false
//es4inst.propertyIsEnumerable('test_static_virt')
false
//es4inst.propertyIsEnumerable('test_private_var')
false
//es4inst.propertyIsEnumerable('test_private_const')
false
//es4inst.propertyIsEnumerable('test_private_function')
false
//es4inst.propertyIsEnumerable('test_private_virt')
false
//ES4Class.propertyIsEnumerable('test_var')
false
//ES4Class.propertyIsEnumerable('test_const')
false
//ES4Class.propertyIsEnumerable('test_function')
false
//ES4Class.propertyIsEnumerable('test_virt')
false
//ES4Class.propertyIsEnumerable('test_static_var')
false
//ES4Class.propertyIsEnumerable('test_static_const')
false
//ES4Class.propertyIsEnumerable('test_static_function')
false
//ES4Class.propertyIsEnumerable('test_static_virt')
false
//ES4Class.propertyIsEnumerable('test_private_var')
false
//ES4Class.propertyIsEnumerable('test_private_const')
false
//ES4Class.propertyIsEnumerable('test_private_function')
false
//ES4Class.propertyIsEnumerable('test_private_virt')
false
//ES4Class.prototype.propertyIsEnumerable('test_var')
false
//ES4Class.prototype.propertyIsEnumerable('test_const')
false
//ES4Class.prototype.propertyIsEnumerable('test_function')
false
//ES4Class.prototype.propertyIsEnumerable('test_virt')
false
//ES4Class.prototype.propertyIsEnumerable('test_static_var')
false
//ES4Class.prototype.propertyIsEnumerable('test_static_const')
false
//ES4Class.prototype.propertyIsEnumerable('test_static_function')
false
//ES4Class.prototype.propertyIsEnumerable('test_static_virt')
false
//ES4Class.prototype.propertyIsEnumerable('test_private_var')
false
//ES4Class.prototype.propertyIsEnumerable('test_private_const')
false
//ES4Class.prototype.propertyIsEnumerable('test_private_function')
false
//ES4Class.prototype.propertyIsEnumerable('test_private_virt')
false
//es3inst.propertyIsEnumerable('test_var')
true
//es3inst.propertyIsEnumerable('test_function')
false
//es3inst.propertyIsEnumerable('test_proto')
false
//es3inst.propertyIsEnumerable('test_static_var')
false
//es3inst.propertyIsEnumerable('test_static_function')
false
//ES3Class.propertyIsEnumerable('test_var')
false
//ES3Class.propertyIsEnumerable('test_function')
false
//ES3Class.propertyIsEnumerable('test_proto')
false
//ES3Class.propertyIsEnumerable('test_static_var')
true
//ES3Class.propertyIsEnumerable('test_static_function')
true
//ES3Class.prototype.propertyIsEnumerable('test_var')
false
//ES3Class.prototype.propertyIsEnumerable('test_function')
true
//ES3Class.prototype.propertyIsEnumerable('test_proto')
true
//ES3Class.prototype.propertyIsEnumerable('test_static_var')
false
//ES3Class.prototype.propertyIsEnumerable('test_static_function')
false

Binary file not shown.

Binary file not shown.