Bläddra i källkod

Enable some tests that work now correctly, minor fixes (#1307)

Marko Lahma 2 år sedan
förälder
incheckning
86375d91c1
2 ändrade filer med 10 tillägg och 50 borttagningar
  1. 0 32
      Jint.Tests.Test262/Test262Harness.settings.json
  2. 10 18
      Jint/Native/String/StringPrototype.cs

+ 0 - 32
Jint.Tests.Test262/Test262Harness.settings.json

@@ -81,10 +81,6 @@
     // http://www.ecma-international.org/ecma-262/#sec-block-level-function-declarations-web-legacy-compatibility-semantics not implemented (block level functions)
     "language/statements/let/block-local-closure-set-before-initialization.js",
 
-    // not implemented (block level functions)
-    "language/block-scope/shadowing/dynamic-lookup-from-closure.js",
-    "language/block-scope/shadowing/lookup-from-closure.js",
-
     // Logic difference in .NET RegExp / skipped in ECMA tests too
     "built-ins/RegExp/S15.10.2.11_A1_T5.js",
     "built-ins/RegExp/S15.10.2.11_A1_T7.js",
@@ -103,9 +99,6 @@
     // parsing of large/small years not implemented in .NET (-271821, +271821)
     "built-ins/Date/parse/time-value-maximum-range.js",
 
-    // for-of not implemented
-    "built-ins/Proxy/enumerate/removed-does-not-trigger.js",
-
     // delete/add detection not implemented for map iterator during iteration
     "built-ins/Map/prototype/forEach/iterates-values-deleted-then-readded.js",
     "built-ins/MapIteratorPrototype/next/iteration-mutable.js",
@@ -116,13 +109,6 @@
     "built-ins/Array/prototype/toLocaleString/primitive_this_value_getter.js",
     "built-ins/Object/prototype/toLocaleString/primitive_this_value_getter.js",
 
-    // observables not implemented
-    "built-ins/String/prototype/padEnd/observable-operations.js",
-    "built-ins/String/prototype/padStart/observable-operations.js",
-
-    // code point iteration not implemented
-    "built-ins/StringIteratorPrototype/next/next-iteration-surrogate-pairs.js",
-
     // Line feed problems (git, windows, linux)
     "language/expressions/template-literal/tv-line-terminator-sequence.js",
 
@@ -144,21 +130,6 @@
     "built-ins/TypedArrayConstructors/ctors/object-arg/as-generator-iterable-returns.js",
     "language/expressions/object/method-definition/name-prop-name-yield-id.js",
 
-    // accessor not implemented
-    "language/expressions/object/prop-dup-set-get-set.js",
-    "language/expressions/object/accessor-name-computed-err-to-prop-key.js",
-    "language/expressions/object/accessor-name-computed-err-unresolvable.js",
-    "language/expressions/object/accessor-name-computed-in.js",
-    "language/expressions/object/accessor-name-literal-numeric-leading-decimal.js",
-    "language/expressions/object/accessor-name-literal-numeric-non-canonical.js",
-    "language/expressions/object/fn-name-accessor-get.js",
-    "language/expressions/object/fn-name-accessor-set.js",
-
-    // super not implemented
-    "language/expressions/object/method.js",
-    "language/expressions/object/setter-super-prop.js",
-    "language/expressions/object/getter-super-prop.js",
-
     // not implemented: Creation of new variable environment for the function body (as distinct from that for the function's parameters)
     "language/expressions/arrow-function/scope-paramsbody-var-open.js",
     "language/expressions/function/scope-paramsbody-var-open.js",
@@ -442,10 +413,7 @@
     "language/expressions/function/scope-param-rest-elem-var-open.js",
     "language/expressions/object/__proto__-duplicate-computed.js",
     "language/expressions/object/__proto__-fn-name.js",
-    "language/expressions/object/__proto__-poisoned-object-prototype.js",
     "language/expressions/object/__proto__-value-non-object.js",
-    "language/expressions/object/__proto__-value-null.js",
-    "language/expressions/object/__proto__-value-obj.js",
     "language/expressions/object/cpn-obj-lit-computed-property-name-from-null.js",
     "language/expressions/object/dstr/meth-ary-init-iter-get-err-array-prototype.js",
     "language/expressions/object/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js",

+ 10 - 18
Jint/Native/String/StringPrototype.cs

@@ -884,36 +884,29 @@ namespace Jint.Native.String
         }
 
         /// <summary>
-        /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
+        /// https://tc39.es/ecma262/#sec-string.prototype.padstart
         /// </summary>
-        /// <param name="thisObj">The original string object</param>
-        /// <param name="arguments">
-        ///     argument[0] is the target length of the output string
-        ///     argument[1] is the string to pad with
-        /// </param>
-        /// <returns></returns>
         private JsValue PadStart(JsValue thisObj, JsValue[] arguments)
         {
-            return Pad(thisObj, arguments, true);
+            return StringPad(thisObj, arguments, true);
         }
 
         /// <summary>
-        /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd
+        /// https://tc39.es/ecma262/#sec-string.prototype.padend
         /// </summary>
-        /// <param name="thisObj">The original string object</param>
-        /// <param name="arguments">
-        ///     argument[0] is the target length of the output string
-        ///     argument[1] is the string to pad with
-        /// </param>
-        /// <returns></returns>
         private JsValue PadEnd(JsValue thisObj, JsValue[] arguments)
         {
-            return Pad(thisObj, arguments, false);
+            return StringPad(thisObj, arguments, false);
         }
 
-        private JsValue Pad(JsValue thisObj, JsValue[] arguments, bool padStart)
+        /// <summary>
+        /// https://tc39.es/ecma262/#sec-stringpad
+        /// </summary>
+        private JsValue StringPad(JsValue thisObj, JsValue[] arguments, bool padStart)
         {
             TypeConverter.CheckObjectCoercible(Engine, thisObj);
+            var s = TypeConverter.ToJsString(thisObj);
+
             var targetLength = TypeConverter.ToInt32(arguments.At(0));
             var padStringValue = arguments.At(1);
 
@@ -921,7 +914,6 @@ namespace Jint.Native.String
                 ? " "
                 : TypeConverter.ToString(padStringValue);
 
-            var s = TypeConverter.ToJsString(thisObj);
             if (s.Length > targetLength || padString.Length == 0)
             {
                 return s;