tests_base.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529
  1. module("Simple masking");
  2. test("inputmask(\"99-99-99\", { clearMaskOnLostFocus: false}", function() {
  3. var $fixture = $("#qunit-fixture");
  4. $fixture.append('<input type="text" id="testmask" />');
  5. $("#testmask").inputmask("99-99-99", {
  6. clearMaskOnLostFocus: false
  7. });
  8. equal(document.getElementById("testmask").inputmask._valueGet(), "__-__-__", "Result " + document.getElementById("testmask").inputmask._valueGet());
  9. $("#testmask").remove();
  10. });
  11. asyncTest("inputmask(\"99-99-99\", { clearMaskOnLostFocus: true}", function() {
  12. var $fixture = $("#qunit-fixture");
  13. $fixture.append('<input type="text" id="testmask" />');
  14. $("#testmask").inputmask("99-99-99", {
  15. clearMaskOnLostFocus: true
  16. });
  17. $("#testmask").blur();
  18. setTimeout(function() {
  19. start();
  20. equal(document.getElementById("testmask").value, "", "Result " + document.getElementById("testmask").value);
  21. $("#testmask").remove();
  22. }, 0);
  23. });
  24. test("inputmask(\"999.999.999\")", function() {
  25. var $fixture = $("#qunit-fixture");
  26. $fixture.append('<input type="text" id="testmask" />');
  27. $("#testmask").inputmask("999.999.999");
  28. $("#testmask")[0].focus();
  29. $("#testmask").Type("123");
  30. equal($("#testmask").val(), "123.___.___", "Result " + $("#testmask").val());
  31. $("#testmask").remove();
  32. });
  33. test("inputmask(\"999.999.999\") + backspace", function() {
  34. var $fixture = $("#qunit-fixture");
  35. $fixture.append('<input type="text" id="testmask" />');
  36. $("#testmask").inputmask("999.999.999");
  37. $("#testmask")[0].focus();
  38. $("#testmask").Type("123");
  39. $("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
  40. equal($("#testmask").val(), "12_.___.___", "Result " + $("#testmask").val());
  41. $("#testmask").remove();
  42. });
  43. asyncTest("inputmask(\"999.999.999\", { oncomplete: ... })", 1, function() {
  44. var $fixture = $("#qunit-fixture");
  45. $fixture.append('<input type="text" id="testmask" />');
  46. $("#testmask").inputmask("999.999.999", {
  47. oncomplete: function() {
  48. equal($("#testmask").val(), "123.456.789", "Result " + $("#testmask").val());
  49. start();
  50. $("#testmask").remove();
  51. }
  52. });
  53. $("#testmask")[0].focus();
  54. $("#testmask").Type("123456789");
  55. });
  56. asyncTest("inputmask(\"9-AAA.999\") - change event", 1, function() {
  57. var $fixture = $("#qunit-fixture");
  58. $fixture.append('<input type="text" id="testmask" />');
  59. $("#testmask").inputmask("9-AAA.999").change(function() {
  60. ok(true, "Change triggered");
  61. start();
  62. $("#testmask").remove();
  63. });
  64. $("#testmask")[0].focus();
  65. setTimeout(function() {
  66. $("#testmask").Type("1abc12");
  67. $("#testmask").blur();
  68. }, 0);
  69. });
  70. asyncTest("inputmask(\"9-AAA.999\", { onincomplete: ... })", 1, function() {
  71. var $fixture = $("#qunit-fixture");
  72. $fixture.append('<input type="text" id="testmask" />');
  73. $("#testmask").inputmask("9-AAA.999", {
  74. onincomplete: function() {
  75. equal($("#testmask").val(), "1-ABC.12_", "Result " + $("#testmask").val());
  76. start();
  77. $("#testmask").remove();
  78. }
  79. });
  80. $("#testmask")[0].focus();
  81. setTimeout(function() {
  82. $("#testmask").Type("1abc12");
  83. $("#testmask").blur();
  84. }, 0);
  85. });
  86. test("inputmask(\"999.999.999\") - delete 2nd with backspace, continue the mask", function() {
  87. var $fixture = $("#qunit-fixture");
  88. $fixture.append('<input type="text" id="testmask" />');
  89. $("#testmask").inputmask("999.999.999");
  90. $("#testmask")[0].focus();
  91. $("#testmask").Type("123");
  92. $("#testmask").SendKey(Inputmask.keyCode.LEFT);
  93. $("#testmask").SendKey(Inputmask.keyCode.LEFT);
  94. $("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
  95. $("#testmask").Type("4");
  96. $("#testmask").SendKey(Inputmask.keyCode.RIGHT);
  97. $("#testmask").Type("56");
  98. equal($("#testmask").val(), "143.56_.___", "Result " + $("#testmask").val());
  99. //$("#testmask").remove();
  100. });
  101. test("inputmask(\"999.999.999\") - delete 2nd with delete, continue the mask", function() {
  102. var $fixture = $("#qunit-fixture");
  103. $fixture.append('<input type="text" id="testmask" />');
  104. $("#testmask").inputmask("999.999.999");
  105. $("#testmask")[0].focus();
  106. $("#testmask").SendKey(49);
  107. $("#testmask").SendKey(50);
  108. $("#testmask").SendKey(51);
  109. $("#testmask").SendKey(Inputmask.keyCode.LEFT);
  110. $("#testmask").SendKey(Inputmask.keyCode.LEFT);
  111. $("#testmask").SendKey(Inputmask.keyCode.LEFT);
  112. $("#testmask").SendKey(Inputmask.keyCode.DELETE);
  113. $("#testmask").SendKey(52);
  114. $("#testmask").SendKey(Inputmask.keyCode.RIGHT);
  115. $("#testmask").SendKey(53);
  116. $("#testmask").SendKey(54);
  117. equal($("#testmask").val(), "143.56_.___", "Result " + $("#testmask").val());
  118. $("#testmask").remove();
  119. });
  120. test("inputmask(\"999.999.999\") - delete selection start with nomask", function() {
  121. var $fixture = $("#qunit-fixture");
  122. $fixture.append('<input type="text" id="testmask" />');
  123. $("#testmask").inputmask("999.999.999");
  124. $("#testmask")[0].focus();
  125. $("#testmask").Type("123456789");
  126. $.caret($("#testmask"), 3, 7);
  127. $("#testmask").SendKey(Inputmask.keyCode.DELETE);
  128. equal($("#testmask").val(), "123.789.___", "Result " + $("#testmask").val());
  129. $("#testmask").remove();
  130. });
  131. test("inputmask(\"999.999.999\") - backspace selection start with nomask", function() {
  132. var $fixture = $("#qunit-fixture");
  133. $fixture.append('<input type="text" id="testmask" />');
  134. $("#testmask").inputmask("999.999.999");
  135. $("#testmask")[0].focus();
  136. $("#testmask").Type("123456789");
  137. $.caret($("#testmask"), 3, 7);
  138. $("#testmask").SendKey(Inputmask.keyCode.DELETE);
  139. equal($("#testmask").val(), "123.789.___", "Result " + $("#testmask").val());
  140. $("#testmask").remove();
  141. });
  142. test("inputmask(\"999.999.999\") - overtype selection start with nomask", function() {
  143. var $fixture = $("#qunit-fixture");
  144. $fixture.append('<input type="text" id="testmask" />');
  145. $("#testmask").inputmask("999.999.999");
  146. $("#testmask")[0].focus();
  147. $("#testmask").Type("123456789");
  148. $.caret($("#testmask"), 3, 7);
  149. $("#testmask").Type("1");
  150. equal($("#testmask").val(), "123.178.9__", "Result " + $("#testmask").val());
  151. $("#testmask").remove();
  152. });
  153. test("inputmask(\"*****\")", function() {
  154. var $fixture = $("#qunit-fixture");
  155. $fixture.append('<input type="text" id="testmask" />');
  156. $("#testmask").inputmask("*****");
  157. $("#testmask")[0].focus();
  158. $("#testmask").Type("abe");
  159. $("#testmask").SendKey(Inputmask.keyCode.LEFT);
  160. $("#testmask").Type("cd");
  161. equal($("#testmask").val(), "abcde", "Result " + $("#testmask").val());
  162. $("#testmask").remove();
  163. });
  164. test("inputmask(\"d/m/y\")", function() {
  165. var $fixture = $("#qunit-fixture");
  166. $fixture.append('<input type="text" id="testmask" />');
  167. $("#testmask").inputmask("d/m/y");
  168. $("#testmask")[0].focus();
  169. $("#testmask").Type("23031973");
  170. $.caret($("#testmask"), 5);
  171. $("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
  172. equal($("#testmask").val(), "23/0_/1973", "Result " + $("#testmask").val());
  173. $("#testmask").remove();
  174. });
  175. test("inputmask(\"(999)999-9999\") - ruslanfedoseenko mask", function() {
  176. var $fixture = $("#qunit-fixture");
  177. $fixture.append('<input type="text" id="testmask" />');
  178. $("#testmask").inputmask("(999)999-9999");
  179. $("#testmask")[0].focus();
  180. $("#testmask").val("9999999999");
  181. $.caret($("#testmask"), 4, 5);
  182. $("#testmask").Type("7");
  183. equal($("#testmask").val(), "(999)999-9999", "Result " + $("#testmask").val());
  184. $("#testmask").remove();
  185. });
  186. test("inputmask(\"(999)999-9999\") - insert false - ruslanfedoseenko mask", function() {
  187. var $fixture = $("#qunit-fixture");
  188. $fixture.append('<input type="text" id="testmask" />');
  189. $("#testmask").inputmask("(999)999-9999", {
  190. insertMode: false
  191. });
  192. $("#testmask")[0].focus();
  193. $("#testmask").val("9999999999");
  194. $.caret($("#testmask"), 4, 5);
  195. $("#testmask").Type("7");
  196. equal($("#testmask").val(), "(999)999-9999", "Result " + $("#testmask").val());
  197. $("#testmask").remove();
  198. });
  199. test("inputmask(\"\") - empty mask - andywolk", function() {
  200. var $fixture = $("#qunit-fixture");
  201. $fixture.append('<input type="text" id="testmask" />');
  202. $("#testmask").inputmask("");
  203. $("#testmask")[0].focus();
  204. $("#testmask").val("123");
  205. equal($("#testmask").val(), "123", "Result " + $("#testmask").val());
  206. $("#testmask").remove();
  207. });
  208. test("Intergroup selection - dhilt", function() {
  209. var $fixture = $("#qunit-fixture");
  210. $fixture.append('<input type="text" id="testmask" />');
  211. $("#testmask").inputmask("dd/mm/yyyy");
  212. $("#testmask")[0].focus();
  213. $("#testmask").Type("23314");
  214. $.caret($("#testmask"), 4, 7);
  215. $("#testmask").SendKey("6");
  216. equal($("#testmask").val(), "23/06/y014", "Result " + $("#testmask").val());
  217. $("#testmask").remove();
  218. });
  219. test("Delete selection with non-masks", function() {
  220. var $fixture = $("#qunit-fixture");
  221. $fixture.append('<input type="text" id="testmask" />');
  222. $("#testmask").inputmask("(999)999-9999");
  223. $("#testmask")[0].focus();
  224. $("#testmask").Type("9999999999");
  225. $.caret($("#testmask"), 8, 11);
  226. $("#testmask").SendKey(Inputmask.keyCode.DELETE);
  227. equal($("#testmask").val(), "(999)999-99__", "Result " + $("#testmask").val());
  228. $("#testmask").remove();
  229. });
  230. test("Selection and backspace also deletes previous - kenaku", function() {
  231. var $fixture = $("#qunit-fixture");
  232. $fixture.append('<input type="text" id="testmask" />');
  233. $("#testmask").inputmask("999 99 99 999");
  234. $("#testmask")[0].focus();
  235. $("#testmask").Type("1234567890");
  236. $.caret($("#testmask"), 2, 3);
  237. $("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
  238. equal($("#testmask").val(), "124 56 78 90_", "Result " + $("#testmask").val());
  239. $("#testmask").remove();
  240. });
  241. module("Non-greedy masks");
  242. test("inputmask(\"*\", { greedy: false, repeat: \"*\" }) - replace cd with 1", function() {
  243. var $fixture = $("#qunit-fixture");
  244. $fixture.append('<input type="text" id="testmask" />');
  245. $("#testmask").inputmask("*", {
  246. greedy: false,
  247. repeat: "*"
  248. });
  249. $("#testmask")[0].focus();
  250. $("#testmask").Type("abcdef");
  251. $.caret($("#testmask"), 2, 4);
  252. $("#testmask").SendKey("1");
  253. equal($("#testmask").val(), "ab1ef", "Result " + $("#testmask").val());
  254. $("#testmask").remove();
  255. });
  256. test("inputmask(\"*\", { greedy: false, repeat: \"*\" }) - type abcdef", function() {
  257. var $fixture = $("#qunit-fixture");
  258. $fixture.append('<input type="text" id="testmask" />');
  259. $("#testmask").inputmask("*", {
  260. greedy: false,
  261. repeat: "*"
  262. });
  263. $("#testmask")[0].focus();
  264. $("#testmask").Type("abcdef");
  265. equal($("#testmask").val(), "abcdef", "Result " + $("#testmask").val());
  266. $("#testmask").remove();
  267. });
  268. test("inputmask(\"A.\", { repeat: \"*\" }) - type abc - joostburg", function() {
  269. var $fixture = $("#qunit-fixture");
  270. $fixture.append('<input type="text" id="testmask" />');
  271. $("#testmask").inputmask("A.", {
  272. repeat: "*"
  273. });
  274. $("#testmask")[0].focus();
  275. $("#testmask").Type("abc");
  276. equal($("#testmask").val(), "A.B.C.", "Result " + $("#testmask").val());
  277. $("#testmask").remove();
  278. });
  279. test("{ mask: \"A\", placeholder: \"\", repeat: 16 }) - type testtest - glosswordteam", function() {
  280. var $fixture = $("#qunit-fixture");
  281. $fixture.append('<input type="text" id="testmask" />');
  282. $("#testmask").inputmask({
  283. mask: "A",
  284. placeholder: "",
  285. repeat: 16
  286. });
  287. $("#testmask")[0].focus();
  288. $("#testmask").Type("testtest");
  289. equal($("#testmask").val(), "TESTTEST", "Result " + $("#testmask").val());
  290. $("#testmask").remove();
  291. });
  292. test("{ mask: \"A\", repeat: 16, greedy: false }) - type testtest - glosswordteam", function() {
  293. var $fixture = $("#qunit-fixture");
  294. $fixture.append('<input type="text" id="testmask" />');
  295. $("#testmask").inputmask({
  296. mask: "A",
  297. repeat: 16,
  298. greedy: false
  299. });
  300. $("#testmask")[0].focus();
  301. $("#testmask").Type("testtest");
  302. equal($("#testmask").val(), "TESTTEST", "Result " + $("#testmask").val());
  303. $("#testmask").remove();
  304. });
  305. module("greedy masks");
  306. test("inputmask(\"*\", { greedy: true, repeat: 10, clearMaskOnLostFocus: false })", function() {
  307. var $fixture = $("#qunit-fixture");
  308. $fixture.append('<input type="text" id="testmask" />');
  309. $("#testmask").inputmask("*", {
  310. greedy: true,
  311. repeat: 10,
  312. clearMaskOnLostFocus: false
  313. });
  314. $("#testmask")[0].focus();
  315. equal($("#testmask")[0].inputmask._valueGet(), "__________", "Result " + $("#testmask")[0].inputmask._valueGet());
  316. $("#testmask").remove();
  317. });
  318. test("inputmask(\"*\", { greedy: true, repeat: 10 }) - type 12345678901234567890", function() {
  319. var $fixture = $("#qunit-fixture");
  320. $fixture.append('<input type="text" id="testmask" />');
  321. $("#testmask").inputmask("*", {
  322. greedy: true,
  323. repeat: 10
  324. });
  325. $("#testmask")[0].focus();
  326. $("#testmask").Type("12345678901234567890");
  327. equal($("#testmask").val(), "1234567890", "Result " + $("#testmask").val());
  328. $("#testmask").remove();
  329. });
  330. test("inputmask(\"9,99\", { greedy: true, repeat: 5 }) - type 12345678901234567890", function() {
  331. var $fixture = $("#qunit-fixture");
  332. $fixture.append('<input type="text" id="testmask" />');
  333. $("#testmask").inputmask("9,99", {
  334. greedy: true,
  335. repeat: 5
  336. });
  337. $("#testmask")[0].focus();
  338. $("#testmask").Type("12345678901234567890");
  339. equal($("#testmask").val(), "1,234,567,890,123,45", "Result " + $("#testmask").val());
  340. $("#testmask").remove();
  341. });
  342. test("inputmask({ mask: \"9\", repeat: 10, placeholder: \"\", numericInput: true }) - greedy true with empty placeholder - type 12345", function() {
  343. var $fixture = $("#qunit-fixture");
  344. $fixture.append('<input type="text" id="testmask" />');
  345. $("#testmask").inputmask({
  346. "mask": "9",
  347. repeat: 10,
  348. placeholder: "",
  349. numericInput: true
  350. });
  351. $("#testmask")[0].focus();
  352. $("#testmask").Type("12345");
  353. equal($("#testmask").val(), "12345", "Result " + $("#testmask").val());
  354. $("#testmask").remove();
  355. });
  356. asyncTest("creditcard switch - pchelailya", function() {
  357. var $fixture = $("#qunit-fixture");
  358. $fixture.append('<input type="text" id="testmask" />');
  359. $("#testmask").inputmask("9999 9999 9999 9999");
  360. $("#testmask").on("keyup", function(event) {
  361. var value = $(this).inputmask("unmaskedvalue");
  362. if (value.length === 2 && value === "37") {
  363. $("input").inputmask("9999 999999 99999");
  364. }
  365. });
  366. $("#testmask")[0].focus();
  367. $("#testmask").Type("37");
  368. setTimeout(function() {
  369. $("#testmask").Type("12");
  370. start();
  371. equal($("#testmask").val(), "3712 ______ _____", "Result " + $("#testmask").val());
  372. $("#testmask").remove();
  373. }, 0);
  374. });
  375. test("maskscache - same mask diff definitions - StonesEditeurs", function() {
  376. var $fixture = $("#qunit-fixture");
  377. $fixture.append('<input type="text" id="testmask" />');
  378. $("#testmask").inputmask({
  379. mask: "Z{1,*}",
  380. definitions: {
  381. 'Z': {
  382. validator: function(chrs, buffer, pos, strict, opts) {
  383. return {
  384. pos: pos,
  385. c: 'A'
  386. };
  387. },
  388. }
  389. }
  390. });
  391. $("#testmask").inputmask({
  392. mask: "Z{1,*}", // <= Same mask
  393. definitions: {
  394. 'Z': {
  395. validator: function(chrs, buffer, pos, strict, opts) {
  396. return {
  397. pos: pos,
  398. c: 'B'
  399. }; // <= another definition
  400. },
  401. }
  402. }
  403. });
  404. $("#testmask").Type("abcdef");
  405. equal(document.getElementById("testmask").inputmask._valueGet(), "BBBBBB", "Result " + document.getElementById("testmask").inputmask._valueGet());
  406. $("#testmask").remove();
  407. });