Skip to content

Commit add5070

Browse files
committed
Extra checks for single operands
1 parent 7dfeda6 commit add5070

File tree

2 files changed

+89
-3
lines changed

2 files changed

+89
-3
lines changed

defaultMethods.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,7 @@ function createComparator (name, func) {
792792
const opStr = { [Compiled]: name }
793793
return {
794794
method: (args, context, above, engine) => {
795-
if (!Array.isArray(args)) throw INVALID_ARGUMENTS
795+
if (!Array.isArray(args) || args.length === 1) throw INVALID_ARGUMENTS
796796
if (args.length === 2) return func(runOptimizedOrFallback(args[0], engine, context, above), runOptimizedOrFallback(args[1], engine, context, above))
797797
let prev = runOptimizedOrFallback(args[0], engine, context, above)
798798
for (let i = 1; i < args.length; i++) {
@@ -803,7 +803,7 @@ function createComparator (name, func) {
803803
return true
804804
},
805805
asyncMethod: async (args, context, above, engine) => {
806-
if (!Array.isArray(args)) throw INVALID_ARGUMENTS
806+
if (!Array.isArray(args) || args.length === 1) throw INVALID_ARGUMENTS
807807
if (args.length === 2) return func(await runOptimizedOrFallback(args[0], engine, context, above), await runOptimizedOrFallback(args[1], engine, context, above))
808808
let prev = await runOptimizedOrFallback(args[0], engine, context, above)
809809
for (let i = 1; i < args.length; i++) {
@@ -818,7 +818,7 @@ function createComparator (name, func) {
818818
if (data.length < 2) return false
819819
if (data.length === 2) return buildState.compile`(${data[0]} ${opStr} ${data[1]})`
820820
let res = buildState.compile`(${data[0]} ${opStr} (prev = ${data[1]}))`
821-
for (let i = 2; i < data.length; i++) res = buildState.compile`(${res} && prev ${opStr} ${data[i]})`
821+
for (let i = 2; i < data.length; i++) res = buildState.compile`(${res} && prev ${opStr} (prev = ${data[i]}))`
822822
return res
823823
},
824824
[OriginalImpl]: true,

suites/comparison.json

+86
Original file line numberDiff line numberDiff line change
@@ -113,5 +113,91 @@
113113
"rule": { "!==": [3, 3, { "throw": "Not Lazy" }] },
114114
"data": {},
115115
"result": false
116+
},
117+
"Single Operand < Tests",
118+
{
119+
"description": "< with 1 argument",
120+
"rule": { "<": [1] },
121+
"data": {},
122+
"error": { "type": "Invalid Arguments" }
123+
},
124+
{
125+
"description": "> with 1 argument",
126+
"rule": { ">": [1] },
127+
"data": {},
128+
"error": { "type": "Invalid Arguments" }
129+
},
130+
{
131+
"description": ">= with 1 argument",
132+
"rule": { ">=": [1] },
133+
"data": {},
134+
"error": { "type": "Invalid Arguments" }
135+
},
136+
{
137+
"description": "== with 1 argument",
138+
"rule": { "==": [1] },
139+
"data": {},
140+
"error": { "type": "Invalid Arguments" }
141+
},
142+
{
143+
"description": "!= with 1 argument",
144+
"rule": { "!=": [1] },
145+
"data": {},
146+
"error": { "type": "Invalid Arguments" }
147+
},
148+
{
149+
"description": "=== with 1 argument",
150+
"rule": { "===": [1] },
151+
"data": {},
152+
"error": { "type": "Invalid Arguments" }
153+
},
154+
{
155+
"description": "!== with 1 argument",
156+
"rule": { "!==": [1] },
157+
"data": {},
158+
"error": { "type": "Invalid Arguments" }
159+
},
160+
"Direct Operand Tests",
161+
{
162+
"description": "< with direct argument",
163+
"rule": { "<": 1 },
164+
"data": {},
165+
"error": { "type": "Invalid Arguments" }
166+
},
167+
{
168+
"description": "> with direct argument",
169+
"rule": { ">": 1 },
170+
"data": {},
171+
"error": { "type": "Invalid Arguments" }
172+
},
173+
{
174+
"description": ">= with direct argument",
175+
"rule": { ">=": 1 },
176+
"data": {},
177+
"error": { "type": "Invalid Arguments" }
178+
},
179+
{
180+
"description": "== with direct argument",
181+
"rule": { "==": 1 },
182+
"data": {},
183+
"error": { "type": "Invalid Arguments" }
184+
},
185+
{
186+
"description": "!= with direct argument",
187+
"rule": { "!=": 1 },
188+
"data": {},
189+
"error": { "type": "Invalid Arguments" }
190+
},
191+
{
192+
"description": "=== with direct argument",
193+
"rule": { "===": 1 },
194+
"data": {},
195+
"error": { "type": "Invalid Arguments" }
196+
},
197+
{
198+
"description": "!== with direct argument",
199+
"rule": { "!==": 1 },
200+
"data": {},
201+
"error": { "type": "Invalid Arguments" }
116202
}
117203
]

0 commit comments

Comments
 (0)