diff options
Diffstat (limited to 'js/src/jit-test/tests/ion/compare-string.js')
-rw-r--r-- | js/src/jit-test/tests/ion/compare-string.js | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/ion/compare-string.js b/js/src/jit-test/tests/ion/compare-string.js new file mode 100644 index 0000000000..db5d295417 --- /dev/null +++ b/js/src/jit-test/tests/ion/compare-string.js @@ -0,0 +1,131 @@ +function compareToAtom(a) { + return a == 'test-test-test-test-test-test-test-test'; +} + +function compareToAtomStrict(a) { + return a === 'test-test-test-test-test-test-test-test'; +} + +function compareToAtomNe(a) { + return a != 'test-test-test-test-test-test-test-test'; +} + +function compareToAtomNeStrict(a) { + return a !== 'test-test-test-test-test-test-test-test'; +} + +function compareToAtomLessThan(a) { + return a < 'test-test-test-test-test-test-test-test'; +} + +function compareToAtomLessThanOrEquals(a) { + return a <= 'test-test-test-test-test-test-test-test'; +} + +function compareToAtomGreaterThan(a) { + return a > 'test-test-test-test-test-test-test-test'; +} + +function compareToAtomGreaterThanOrEquals(a) { + return a >= 'test-test-test-test-test-test-test-test'; +} + +var st = 'st-test-test-test-test-test-test-test'; + +function compareToRope(a) { + return a == ('te' + st); +} + +function compareToRopeStrict(a) { + return a === ('te' + st); +} + +function compareToRopeNe(a) { + var st = 'st-test-test-test-test-test-test-test'; + return a != ('te' + st); +} + +function compareToRopeNeStrict(a) { + var st = 'st-test-test-test-test-test-test-test'; + return a !== ('te' + st); +} + +function compareToRopeLessThan(a) { + var st = 'st-test-test-test-test-test-test-test'; + return a < ('te' + st); +} + +function compareToRopeLessThanOrEquals(a) { + var st = 'st-test-test-test-test-test-test-test'; + return a <= ('te' + st); +} + +function compareToRopeGreaterThan(a) { + var st = 'st-test-test-test-test-test-test-test'; + return a > ('te' + st); +} + +function compareToRopeGreaterThanOrEquals(a) { + var st = 'st-test-test-test-test-test-test-test'; + return a >= ('te' + st); +} + +function main() { + // |test| must be longer than |JSFatInlineString::MAX_LENGTH_LATIN1| to + // ensure the above functions create ropes when concatenating strings. + var test = 'test-test-test-test-test-test-test-test'; + var foobar = 'foobar'; + + assertEq(compareToAtom(test), true); + assertEq(compareToAtom(foobar), false); + + assertEq(compareToAtomStrict(test), true); + assertEq(compareToAtomStrict(foobar), false); + + assertEq(compareToAtomNe(test), false); + assertEq(compareToAtomNe(foobar), true); + + assertEq(compareToAtomNeStrict(test), false); + assertEq(compareToAtomNeStrict(foobar), true); + + assertEq(compareToAtomLessThan(test), false); + assertEq(compareToAtomLessThan(foobar), true); + + assertEq(compareToAtomLessThanOrEquals(test), true); + assertEq(compareToAtomLessThanOrEquals(foobar), true); + + assertEq(compareToAtomGreaterThan(test), false); + assertEq(compareToAtomGreaterThan(foobar), false); + + assertEq(compareToAtomGreaterThanOrEquals(test), true); + assertEq(compareToAtomGreaterThanOrEquals(foobar), false); + + + assertEq(compareToRope(test), true); + assertEq(compareToRope(foobar), false); + + assertEq(compareToRopeStrict(test), true); + assertEq(compareToRopeStrict(foobar), false); + + assertEq(compareToRopeNe(test), false); + assertEq(compareToRopeNe(foobar), true); + + assertEq(compareToRopeNeStrict(test), false); + assertEq(compareToRopeNeStrict(foobar), true); + + assertEq(compareToRopeLessThan(test), false); + assertEq(compareToRopeLessThan(foobar), true); + + assertEq(compareToRopeLessThanOrEquals(test), true); + assertEq(compareToRopeLessThanOrEquals(foobar), true); + + assertEq(compareToRopeGreaterThan(test), false); + assertEq(compareToRopeGreaterThan(foobar), false); + + assertEq(compareToRopeGreaterThanOrEquals(test), true); + assertEq(compareToRopeGreaterThanOrEquals(foobar), false); +} + +for (var i = 0; i < 10000; i++) { + main(); +} |