tests_base.js 18 KB

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