tests_base.js 17 KB

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