JSFiddle - React, Tailwind, and code Playground

by Graham Fairweather

HTML

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://dl.getdropbox.com/u/35146/js/tests/testrunner.js"></script>
<link rel="stylesheet" href="http://dl.getdropbox.com/u/35146/js/tests/testsuite.css">
<h1>isNumber Test Cases</h1>

<h2 id="banner" class="pass"></h2>

<h2 id="userAgent"></h2>

<div id="currentFunction"></div>

<div id="selectFunction">
    <label for="toTest" style="font-weight:bold; font-size:Large;">Select function to test:</label>
    <select id="toTest" name="toTest">
        <option value="0">1. !isNaN(parseFloat(n)) &amp;&amp; isFinite(n)</option>
        <option value="1">2. !isNaN(n) &amp;&amp; !isNaN(parseFloat(n))</option>
        <option value="2">3. !isNaN((n))</option>
        <option value="3">4. !isNaN(parseFloat(n))</option>
        <option value="4">5. typeof(n) != &apos;boolean&apos; &amp;&amp; !isNaN(n)</option>
        <option value="5">6. parseFloat(n) === Number(n)</option>
        <option value="6">7. parseInt(n) === Number(n)</option>
        <option value="7">8. !isNaN(Number(String(n)))</option>
        <option value="8">9. !isNaN(+(&apos;&apos; + n))</option>
        <option value="9">10. (+n) == n</option>
        <option value="10">11. n &amp;&amp; /^-?\d+(\.\d+)?$/.test(n + &apos;&apos;)</option>
        <option value="11">12. isFinite(Number(String(n)))</option>
        <option value="12">13. isFinite(String(n))</option>
        <option value="13">14. !isNaN(n) &amp;&amp; !isNaN(parseFloat(n)) &amp;&amp; isFinite(n)</option>
        <option value="14">15. parseFloat(n) == n</option>
        <option value="15">16. (n - 0) == n &amp;&amp; n.length &gt; 0</option>
        <option value="16">17. typeof n === &apos;number&apos; &amp;&amp; isFinite(n)</option>
        <option value="17">18. !Array.isArray(n) &amp;&amp; !isNaN(parseFloat(n)) &amp;&amp; isFinite(n.toString().replace(/^-/, &apos;&apos;))</option>
        <option value="18">19. typeof n === &apos;number&apos;</option>
       ...

JavaScript

$('#UserAgent').val(navigator.userAgent);

var testHelper = function () {

    var testSuite = function () {
        test("Integer Literals", function () {
            ok(isNumber("-10"), "Negative integer string");
            ok(isNumber("0"), "Zero string");
            ok(isNumber("5"), "Positive integer string");
            ok(isNumber(-16), "Negative integer number");
            ok(isNumber(0), "Zero integer number");
            ok(isNumber(32), "Positive integer number");
            ok(isNumber("040"), "Octal integer literal string");
            ok(isNumber(0144), "Octal integer literal");
            ok(isNumber("-040"), "Negative Octal integer literal string");
            ok(isNumber(-0144), "Negative Octal integer literal");
            ok(isNumber("0xFF"), "Hexadecimal integer literal string");
            ok(isNumber(0xFFF), "Hexadecimal integer literal");
            ok(isNumber("-0xFF"), "Negative Hexadecimal integer literal string");
            ok(isNumber(-0xFFF), "Negative Hexadecimal integer literal");
        });

        test("Foating-Point Literals", function () {
            ok(isNumber("-1.6"), "Negative floating point string");
            ok(isNumber("4.536"), "Positive floating point string");
            ok(isNumber(-2.6), "Negative floating point number");
            ok(isNumber(3.1415), "Positive floating point number");
            ok(isNumber(8e5), "Exponential notation");
            ok(isNumber("123e-2"), "Exponential notation string");
        });

        test("Non-Numeric values", function () {
            equals(isNumber(""), false, "Empty string");
            equals(isNumber("        "), false, "Whitespace characters string");
            equals(isNumber("\t\t"), false, "Tab characters string");
            equals(isNumber("abcdefghijklm1234567890"), false, "Alphanumeric character string");
            equals(isNumber("xabcdefx"), false, "Non-numeric character string");
            equals(isNumber(true), false,...