Skip to content

Commit 72aac4a

Browse files
Tests for delete operator
1 parent 835a4fa commit 72aac4a

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

test/es12/optional-delete.js

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
//-------------------------------------------------------------------------------------------------------
2+
// Copyright (C) Microsoft. All rights reserved.
3+
// Copyright (c) ChakraCore Project Contributors. All rights reserved.
4+
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
5+
//-------------------------------------------------------------------------------------------------------
6+
7+
// @ts-check
8+
/// <reference path="../UnitTestFramework/UnitTestFramework.js" />
9+
10+
WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js");
11+
12+
const createObj = () => ({ "null": null, "undefined": undefined, something: 42 });
13+
14+
const tests = [
15+
{
16+
name: "`delete` should successfully delete from opt-chain",
17+
body() {
18+
const obj = createObj();
19+
20+
assert.strictEqual(null, obj?.null);
21+
assert.isTrue(delete obj?.null);
22+
assert.strictEqual(undefined, obj?.null);
23+
24+
assert.strictEqual(undefined, obj?.undefined);
25+
assert.isTrue(delete obj?.undefined);
26+
assert.strictEqual(undefined, obj?.undefined);
27+
28+
assert.strictEqual(42, obj?.something);
29+
assert.isTrue(delete obj?.something);
30+
assert.strictEqual(undefined, obj?.something);
31+
}
32+
},
33+
{
34+
name: "`delete` should return `true` if opt-chain short-circuits",
35+
body() {
36+
const obj = createObj();
37+
38+
assert.strictEqual(undefined, obj.doesNotExist);
39+
assert.strictEqual(undefined, obj.doesNotExist?.something);
40+
assert.isTrue(delete obj.doesNotExist?.something);
41+
assert.strictEqual(undefined, obj.doesNotExist?.something);
42+
43+
assert.strictEqual(undefined, obj?.doesNotExist);
44+
assert.strictEqual(undefined, obj?.doesNotExist?.something);
45+
assert.isTrue(delete obj?.doesNotExist?.something);
46+
assert.strictEqual(undefined, obj?.doesNotExist?.something);
47+
}
48+
}
49+
];
50+
51+
testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });

test/es12/rlexe.xml

+4
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,9 @@
1717
<files>optional-async.js</files>
1818
<compile-flags>-args summary -endargs</compile-flags>
1919
</default>
20+
<default>
21+
<files>optional-delete.js</files>
22+
<compile-flags>-args summary -endargs</compile-flags>
23+
</default>
2024
</test>
2125
</regress-exe>

0 commit comments

Comments
 (0)