Browse Source

detected failure in decimals delete fn

Robin Herbots 12 years ago
parent
commit
ae38821565
1 changed files with 287 additions and 34 deletions
  1. 287 34
      qunit/tests.js

+ 287 - 34
qunit/tests.js

@@ -3,12 +3,12 @@ var keyCodes = {
     NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91
 }
 
-$.fn.SendKey = function (keyCode) {
-	var sendDummyKeydown = false;
-    if ( Object.prototype.toString.call(keyCode) == '[object String]') {
-	  keyCode = keyCode.charCodeAt(0);
-	  sendDummyKeydown = true;
-	}
+$.fn.SendKey = function (keyCode, modifier) {
+    var sendDummyKeydown = false;
+    if (Object.prototype.toString.call(keyCode) == '[object String]') {
+        keyCode = keyCode.charCodeAt(0);
+        sendDummyKeydown = true;
+    }
 
     function caret(input, begin, end) {
         var npt = input.jquery && input.length > 0 ? input[0] : input, range;
@@ -46,34 +46,51 @@ $.fn.SendKey = function (keyCode) {
 
     switch (keyCode) {
         case keyCodes.LEFT: {
-            var pos = caret(this);
-            caret(this, pos.begin - 1);
-            break;
+            if (modifier == undefined) {
+                var pos = caret(this);
+                caret(this, pos.begin - 1);
+                break;
+            }
         }
         case keyCodes.RIGHT: {
-            var pos = caret(this);
-            caret(this, pos.begin + 1);
-            break;
+            if (modifier == undefined) {
+                var pos = caret(this);
+                caret(this, pos.begin + 1);
+                break;
+            }
         }
         default: {
             var keydown = $.Event("keydown"),
                 keypress = $.Event("keypress"),
                 keyup = $.Event("keyup");
 
-			if(!sendDummyKeydown) keydown.keyCode = keyCode;
-			$(this).trigger(keydown);
+            if (!sendDummyKeydown) {
+                keydown.keyCode = keyCode;
+                if (modifier == keyCodes.CONTROL)
+                    keydown.ctrlKey = true;
+            }
+            $(this).trigger(keydown);
             if (!keydown.isDefaultPrevented()) {
                 keypress.keyCode = keyCode;
+                if (modifier == keyCodes.CONTROL)
+                    keypress.ctrlKey = true;
                 $(this).trigger(keypress);
                 if (!keypress.isDefaultPrevented()) {
                     keyup.keyCode = keyCode;
+                    if (modifier == keyCodes.CONTROL)
+                        keyup.ctrlKey = true;
                     $(this).trigger(keyup);
                 }
             }
         }
     }
 }
-
+$.fn.Type = function (inputStr) {
+    var $input = $(this);
+    $.each(inputStr.split(''), function (ndx, lmnt) {
+        $input.SendKey(lmnt);
+    });
+}
 
 module("Simple masking");
 
@@ -346,16 +363,16 @@ test("inputmask(\"(99) 9999[9]-99999\") - input 121234-12345", function () {
     $("#testmask").SendKey("1");
     $("#testmask").SendKey("2");
     $("#testmask").SendKey("1");
-	$("#testmask").SendKey("2");
-	$("#testmask").SendKey("3");
-	$("#testmask").SendKey("4");
-	$("#testmask").SendKey("-");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("3");
+    $("#testmask").SendKey("4");
+    $("#testmask").SendKey("-");
     $("#testmask").SendKey("1");
-	$("#testmask").SendKey("2");
-	$("#testmask").SendKey("3");
-	$("#testmask").SendKey("4");
-	$("#testmask").SendKey("5");
-	
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("3");
+    $("#testmask").SendKey("4");
+    $("#testmask").SendKey("5");
+
     equal($("#testmask").val(), "(12) 1234-12345", "Result " + $("#testmask").val());
 
     $("#testmask").remove();
@@ -371,16 +388,16 @@ test("inputmask(\"(99) 9999[9]-99999\") - input 121234512345", function () {
     $("#testmask").SendKey("1");
     $("#testmask").SendKey("2");
     $("#testmask").SendKey("1");
-	$("#testmask").SendKey("2");
-	$("#testmask").SendKey("3");
-	$("#testmask").SendKey("4");
-	$("#testmask").SendKey("5");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("3");
+    $("#testmask").SendKey("4");
+    $("#testmask").SendKey("5");
     $("#testmask").SendKey("1");
-	$("#testmask").SendKey("2");
-	$("#testmask").SendKey("3");
-	$("#testmask").SendKey("4");
-	$("#testmask").SendKey("5");
-	
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("3");
+    $("#testmask").SendKey("4");
+    $("#testmask").SendKey("5");
+
     equal($("#testmask").val(), "(12) 12345-12345", "Result " + $("#testmask").val());
 
     $("#testmask").remove();
@@ -404,7 +421,7 @@ test("inputmask({ mask: [\"999.999.999-99\", \"99.999.999/9999-99\"]}) - input 1
     $("#testmask").SendKey("3");
     $("#testmask").SendKey("1");
     $("#testmask").SendKey("2");
-	
+
     equal($("#testmask").val(), "123.123.123-12", "Result " + $("#testmask").val());
 
     $("#testmask").remove();
@@ -437,3 +454,239 @@ test("inputmask({ mask: [\"999.999.999-99\", \"99.999.999/9999-99\"]}) - input 1
 
     $("#testmask").remove();
 });
+
+module("Date.Extensions");
+test("inputmask(\"dd/mm/yyyy\") - input 2331973", function () {
+    $('body').append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("dd/mm/yyyy");
+
+    $("#testmask")[0].focus();
+
+    var event;
+
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("3");
+    $("#testmask").SendKey("3");
+    $("#testmask").SendKey("1");
+    $("#testmask").SendKey("9");
+    $("#testmask").SendKey("7");
+    $("#testmask").SendKey("3");
+
+    equal($("#testmask").val(), "23/03/1973", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});
+test("inputmask(\"mm/dd/yyyy\") - input 3231973", function () {
+    $('body').append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("mm/dd/yyyy");
+
+    $("#testmask")[0].focus();
+
+    var event;
+
+    $("#testmask").SendKey("3");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("3");
+    $("#testmask").SendKey("1");
+    $("#testmask").SendKey("9");
+    $("#testmask").SendKey("7");
+    $("#testmask").SendKey("3");
+
+    equal($("#testmask").val(), "03/23/1973", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});
+
+test("inputmask(\"dd/mm/yyyy\") - input 29022012", function () {
+    $('body').append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("dd/mm/yyyy");
+
+    $("#testmask")[0].focus();
+
+    var event;
+
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("9");
+    $("#testmask").SendKey("0");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("0");
+    $("#testmask").SendKey("1");
+    $("#testmask").SendKey("2");
+
+    equal($("#testmask").val(), "29/02/2012", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});
+
+test("inputmask(\"dd/mm/yyyy\") - input 29022013", function () {
+    $('body').append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("dd/mm/yyyy");
+
+    $("#testmask")[0].focus();
+
+    var event;
+
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("9");
+    $("#testmask").SendKey("0");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("0");
+    $("#testmask").SendKey("1");
+    $("#testmask").SendKey("3");
+
+    equal($("#testmask").val(), "29/02/201y", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});
+
+test("inputmask(\"mm/dd/yyyy\") - input 02292012", function () {
+    $('body').append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("mm/dd/yyyy");
+
+    $("#testmask")[0].focus();
+
+    var event;
+
+    $("#testmask").SendKey("0");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("9");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("0");
+    $("#testmask").SendKey("1");
+    $("#testmask").SendKey("2");
+
+    equal($("#testmask").val(), "02/29/2012", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});
+
+test("inputmask(\"mm/dd/yyyy\") - input 02292013", function () {
+    $('body').append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("mm/dd/yyyy");
+
+    $("#testmask")[0].focus();
+
+    var event;
+
+    $("#testmask").SendKey("0");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("9");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("0");
+    $("#testmask").SendKey("1");
+    $("#testmask").SendKey("3");
+
+    equal($("#testmask").val(), "02/29/201y", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});
+
+test("inputmask(\"dd/mm/yyyy\") - input CTRL RIGHT", function () {
+    $('body').append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("dd/mm/yyyy");
+
+    $("#testmask")[0].focus();
+
+    var event;
+
+    $("#testmask").SendKey(keyCodes.RIGHT, keyCodes.CONTROL);
+
+    ok($("#testmask").val() != "dd/mm/yyyy", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});
+
+test("inputmask(\"dd/mm/yyyy\") - input 2331973 BACKSPACE x4 2013", function () {
+    $('body').append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("dd/mm/yyyy");
+
+    $("#testmask")[0].focus();
+
+    var event;
+
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("3");
+    $("#testmask").SendKey("3");
+    $("#testmask").SendKey("1");
+    $("#testmask").SendKey("9");
+    $("#testmask").SendKey("7");
+    $("#testmask").SendKey("3");
+    $("#testmask").SendKey(keyCodes.BACKSPACE);
+    $("#testmask").SendKey(keyCodes.BACKSPACE);
+    $("#testmask").SendKey(keyCodes.BACKSPACE);
+    $("#testmask").SendKey(keyCodes.BACKSPACE);
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("0");
+    $("#testmask").SendKey("1");
+    $("#testmask").SendKey("3");
+
+    equal($("#testmask").val(), "23/03/2013", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});
+
+module("Numeric.Extensions");
+test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\" }\") - input 12345.123", function () {
+    $('body').append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("decimal", { autoGroup: true, groupSeparator: "," });
+
+    $("#testmask")[0].focus();
+
+    var event;
+
+    $("#testmask").SendKey("1");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("3");
+    $("#testmask").SendKey("4");
+    $("#testmask").SendKey("5");
+    $("#testmask").SendKey(".");
+    $("#testmask").SendKey("1");
+    $("#testmask").SendKey("2");
+    $("#testmask").SendKey("3");
+
+    equal($("#testmask").val(), "12,345.123", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});
+
+test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\" }\") - input 12345.123 click del del del", function () {
+    $('body').append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("decimal", { autoGroup: true, groupSeparator: "," });
+
+    $("#testmask")[0].focus();
+
+    var event;
+
+    $("#testmask").Type("12345.123");
+    $("#testmask").click();
+    $("#testmask").SendKey(keyCodes.DELETE);
+    $("#testmask").SendKey(keyCodes.DELETE);
+    $("#testmask").SendKey(keyCodes.DELETE);
+
+    equal($("#testmask").val(), "12,345", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});
+test("inputmask(\"decimal\", { autoGroup: true, groupSeparator: \",\" }\") - input 12345.123 click del del del .789", function () {
+    $('body').append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask("decimal", { autoGroup: true, groupSeparator: "," });
+
+    $("#testmask")[0].focus();
+
+    var event;
+
+    $("#testmask").Type("12345.123");
+    $("#testmask").click();
+    $("#testmask").SendKey(keyCodes.DELETE);
+    $("#testmask").SendKey(keyCodes.DELETE);
+    $("#testmask").SendKey(keyCodes.DELETE);
+    $("#testmask").Type(".789");
+
+    equal($("#testmask").val(), "12,345.789", "Result " + $("#testmask").val());
+
+    $("#testmask").remove();
+});