{"ScriptPreparationCode":"var a = \u0022FOO BAR\u0022;\r\nvar b = \u0022foo bar\u0022;\r\n\r\nvar options = {\r\n numeric: true\r\n};\r\n\r\nvar collator = new Intl.Collator(\u0027en\u0027, options);\r\n\r\nfunction collatorCompare(valueA, valueB) {\r\n const valueAMissing = valueA == null || valueA == undefined;\r\n const valueBMissing = valueB == null || valueB == undefined;\r\n\r\n if (valueA === valueB) {\r\n return 0\r\n } else if (valueAMissing) {\r\n return -1\r\n } else if (valueBMissing) {\r\n return 1\r\n }\r\n\r\n return collator.compare(valueA, valueB)\r\n}\r\n\r\nfunction hasUnknownProperty(val) {\r\n return (\r\n typeof val === \u0027object\u0027 \u0026\u0026\r\n val !== null \u0026\u0026\r\n typeof (val).unknownProperty === \u0027function\u0027\r\n );\r\n}\r\n\r\nfunction isEmpty(obj) {\r\n if (obj === null || obj === undefined) {\r\n return true;\r\n }\r\n\r\n if (!hasUnknownProperty(obj) \u0026\u0026 typeof(obj).size === \u0027number\u0027) {\r\n return !(obj).size;\r\n }\r\n\r\n if (typeof obj === \u0027object\u0027) {\r\n let size = get(obj, \u0027size\u0027);\r\n if (typeof size === \u0027number\u0027) {\r\n return !size;\r\n }\r\n let length = get(obj, \u0027length\u0027);\r\n if (typeof length === \u0027number\u0027) {\r\n return !length;\r\n }\r\n }\r\n\r\n if (typeof(obj).length === \u0027number\u0027 \u0026\u0026 typeof obj !== \u0027function\u0027) {\r\n return !(obj).length;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction isBlank(obj) {\r\n return isEmpty(obj) || (typeof obj === \u0027string\u0027 \u0026\u0026 /\\S/.test(obj) === false);\r\n}\r\n\r\nfunction collatorCompare2(valueA, valueB) {\r\n\r\n if (valueA === valueB) {\r\n return 0\r\n } else if (isBlank(valueA)) {\r\n return -1\r\n } else if (isBlank(valueB)) {\r\n return 1\r\n }\r\n\r\n return collator.compare(valueA, valueB)\r\n}","TestCases":[{"Name":"collatorCompare2()","Code":"collatorCompare2(a,b) === 0","IsDeferred":false},{"Name":"collatorCompare()","Code":"collatorCompare(a,b) === 0","IsDeferred":false}]}