tests_multi.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586
  1. import { keys } from "../lib/keycode";
  2. export default function (qunit, Inputmask) {
  3. const $ = Inputmask.dependencyLib;
  4. qunit.module("multi masks");
  5. qunit.test(
  6. 'inputmask({ mask: ["99-99", "999-99"]}) - input 12345',
  7. function (assert) {
  8. const done = assert.async(),
  9. $fixture = $("#qunit-fixture");
  10. $fixture.append('<input type="text" id="testmask" />');
  11. const testmask = document.getElementById("testmask");
  12. Inputmask({
  13. mask: ["99-99", "999-99"]
  14. }).mask(testmask);
  15. testmask.focus();
  16. $("#testmask").Type("12345");
  17. setTimeout(function () {
  18. assert.equal(testmask.value, "123-45", "Result " + testmask.value);
  19. done();
  20. }, 0);
  21. }
  22. );
  23. qunit.test(
  24. 'inputmask({ mask: ["999.999.999-99", "99.999.999/9999-99"]}) - input 12312312312',
  25. function (assert) {
  26. const done = assert.async(),
  27. $fixture = $("#qunit-fixture");
  28. $fixture.append('<input type="text" id="testmask" />');
  29. const testmask = document.getElementById("testmask");
  30. Inputmask({
  31. mask: ["999.999.999-99", "99.999.999/9999-99"]
  32. }).mask(testmask);
  33. testmask.focus();
  34. $("#testmask").Type("12312312312");
  35. setTimeout(function () {
  36. assert.equal(
  37. testmask.value,
  38. "123.123.123-12",
  39. "Result " + testmask.value
  40. );
  41. done();
  42. }, 0);
  43. }
  44. );
  45. qunit.test(
  46. 'inputmask({ mask: ["999.999.999-99", "99.999.999/9999-99"]}) - input 12.123123123412',
  47. function (assert) {
  48. const done = assert.async(),
  49. $fixture = $("#qunit-fixture");
  50. $fixture.append('<input type="text" id="testmask" />');
  51. const testmask = document.getElementById("testmask");
  52. Inputmask({
  53. mask: ["999.999.999-99", "99.999.999/9999-99"]
  54. }).mask(testmask);
  55. testmask.focus();
  56. $("#testmask").Type("12.123123123412");
  57. setTimeout(function () {
  58. assert.equal(
  59. testmask.value,
  60. "12.123.123/1234-12",
  61. "Result " + testmask.value
  62. );
  63. done();
  64. }, 0);
  65. }
  66. );
  67. qunit.test(
  68. 'inputmask({ mask: ["99999", "99999-9999"]]}) - input 12345 greedy + blur',
  69. function (assert) {
  70. const done = assert.async(),
  71. $fixture = $("#qunit-fixture");
  72. $fixture.append('<input type="text" id="testmask" />');
  73. const testmask = document.getElementById("testmask");
  74. Inputmask({
  75. mask: ["99999", "99999-9999"]
  76. }).mask(testmask);
  77. testmask.focus();
  78. $("#testmask").Type("12345");
  79. testmask.blur();
  80. setTimeout(function () {
  81. assert.equal(
  82. testmask.inputmask._valueGet(),
  83. "12345",
  84. "Result " + testmask.inputmask._valueGet()
  85. );
  86. done();
  87. }, 0);
  88. }
  89. );
  90. qunit.test(
  91. 'inputmask({ mask: ["99999", "99999-9999"]]}) - input 12345 not greedy',
  92. function (assert) {
  93. const done = assert.async(),
  94. $fixture = $("#qunit-fixture");
  95. $fixture.append('<input type="text" id="testmask" />');
  96. const testmask = document.getElementById("testmask");
  97. Inputmask({
  98. mask: ["99999", "99999-9999"],
  99. greedy: false,
  100. keepStatic: true
  101. }).mask(testmask);
  102. testmask.focus();
  103. $("#testmask").Type("12345");
  104. setTimeout(function () {
  105. assert.equal(testmask.value, "12345", "Result " + testmask.value);
  106. done();
  107. }, 0);
  108. }
  109. );
  110. qunit.test(
  111. 'inputmask({ mask: ["99999", "99999-9999"]]}) - input 12345-1234',
  112. function (assert) {
  113. const done = assert.async(),
  114. $fixture = $("#qunit-fixture");
  115. $fixture.append('<input type="text" id="testmask" />');
  116. const testmask = document.getElementById("testmask");
  117. Inputmask({
  118. mask: ["99999", "99999-9999"]
  119. }).mask(testmask);
  120. testmask.focus();
  121. $("#testmask").Type("12345-1234");
  122. setTimeout(function () {
  123. assert.equal(testmask.value, "12345-1234", "Result " + testmask.value);
  124. done();
  125. }, 0);
  126. }
  127. );
  128. qunit.test(
  129. 'inputmask({ mask: ["99999", "99999-9999"]]}) - input 123451234',
  130. function (assert) {
  131. const done = assert.async(),
  132. $fixture = $("#qunit-fixture");
  133. $fixture.append('<input type="text" id="testmask" />');
  134. const testmask = document.getElementById("testmask");
  135. Inputmask({
  136. mask: ["99999", "99999-9999"]
  137. }).mask(testmask);
  138. testmask.focus();
  139. $("#testmask").Type("123451234");
  140. setTimeout(function () {
  141. assert.equal(testmask.value, "12345-1234", "Result " + testmask.value);
  142. done();
  143. }, 0);
  144. }
  145. );
  146. qunit.test(
  147. 'inputmask({ mask: ["99999", "99999-9999"]]}) - input 1234512',
  148. function (assert) {
  149. const done = assert.async(),
  150. $fixture = $("#qunit-fixture");
  151. $fixture.append('<input type="text" id="testmask" />');
  152. const testmask = document.getElementById("testmask");
  153. Inputmask({
  154. mask: ["99999", "99999-9999"]
  155. }).mask(testmask);
  156. testmask.focus();
  157. $("#testmask").Type("1234512");
  158. setTimeout(function () {
  159. assert.equal(testmask.value, "12345-12__", "Result " + testmask.value);
  160. done();
  161. }, 0);
  162. }
  163. );
  164. qunit.test(
  165. 'inputmask({ mask: ["99999", "99999-9999", "999999-9999"]]}) - input 1234561234',
  166. function (assert) {
  167. const done = assert.async(),
  168. $fixture = $("#qunit-fixture");
  169. $fixture.append('<input type="text" id="testmask" />');
  170. const testmask = document.getElementById("testmask");
  171. Inputmask({
  172. mask: ["99999", "99999-9999", "999999-9999"]
  173. }).mask(testmask);
  174. testmask.focus();
  175. $("#testmask").Type("1234561234");
  176. setTimeout(function () {
  177. assert.equal(testmask.value, "123456-1234", "Result " + testmask.value);
  178. done();
  179. }, 0);
  180. }
  181. );
  182. qunit.test(
  183. 'inputmask({ mask: ["99999", "99999-9999", "999999-9999"]]}) - input 12345-6',
  184. function (assert) {
  185. const done = assert.async(),
  186. $fixture = $("#qunit-fixture");
  187. $fixture.append('<input type="text" id="testmask" />');
  188. const testmask = document.getElementById("testmask");
  189. Inputmask({
  190. mask: ["99999", "99999-9999", "999999-9999"]
  191. }).mask(testmask);
  192. testmask.focus();
  193. $("#testmask").Type("12345-6");
  194. setTimeout(function () {
  195. assert.equal(testmask.value, "12345-6___", "Result " + testmask.value);
  196. done();
  197. }, 0);
  198. }
  199. );
  200. qunit.test(
  201. 'inputmask({ mask: ["99999", "99999-9999", "999999-9999"] , keepStatic: true}) - input 123456',
  202. function (assert) {
  203. const done = assert.async(),
  204. $fixture = $("#qunit-fixture");
  205. $fixture.append('<input type="text" id="testmask" />');
  206. const testmask = document.getElementById("testmask");
  207. Inputmask({
  208. mask: ["99999", "99999-9999", "999999-9999"],
  209. keepStatic: true
  210. }).mask(testmask);
  211. testmask.focus();
  212. $("#testmask").Type("123456");
  213. setTimeout(function () {
  214. assert.equal(testmask.value, "12345-6___", "Result " + testmask.value);
  215. done();
  216. }, 0);
  217. }
  218. );
  219. qunit.test(
  220. 'inputmask({ mask: ["99999", "99999-9999", "999999-9999"], keepStatic: false}) - input 123456',
  221. function (assert) {
  222. const done = assert.async(),
  223. $fixture = $("#qunit-fixture");
  224. $fixture.append('<input type="text" id="testmask" />');
  225. const testmask = document.getElementById("testmask");
  226. Inputmask({
  227. mask: ["99999", "99999-9999", "999999-9999"],
  228. keepStatic: false
  229. }).mask(testmask);
  230. testmask.focus();
  231. $("#testmask").Type("123456");
  232. setTimeout(function () {
  233. assert.equal(testmask.value, "123456-____", "Result " + testmask.value);
  234. done();
  235. }, 0);
  236. }
  237. );
  238. qunit.test(
  239. 'inputmask({ mask: ["99999", "99999-9999", "999999-9999"]]}) - input 123456 (rtl)',
  240. function (assert) {
  241. const done = assert.async(),
  242. $fixture = $("#qunit-fixture");
  243. $fixture.append('<input type="text" id="testmask" dir="rtl" />');
  244. const testmask = document.getElementById("testmask");
  245. Inputmask({
  246. mask: ["99999", "99999-9999", "999999-9999"]
  247. }).mask(testmask);
  248. testmask.focus();
  249. setTimeout(function () {
  250. // needed to pass on ie
  251. $("#testmask").Type("123456");
  252. setTimeout(function () {
  253. assert.equal(
  254. testmask.value,
  255. "___65-4321",
  256. "Result " + testmask.value
  257. );
  258. done();
  259. }, 0);
  260. }, 0);
  261. }
  262. );
  263. qunit.test(
  264. "inputmask({ mask: ['9 AAA-AAA', 'A 999-999'] }) ",
  265. function (assert) {
  266. const done = assert.async(),
  267. $fixture = $("#qunit-fixture");
  268. $fixture.append('<input type="text" id="testmask" />');
  269. const testmask = document.getElementById("testmask");
  270. Inputmask({
  271. mask: ["9 AAA-AAA", "A 999-999"]
  272. }).mask(testmask);
  273. $("#testmask").Type("1abc");
  274. setTimeout(function () {
  275. assert.equal(testmask.value, "1 ABC-___", "Result " + testmask.value);
  276. done();
  277. }, 0);
  278. }
  279. );
  280. qunit.test(
  281. "inputmask({ mask: ['9 AAA-AAA', 'A 999-999'] }) ",
  282. function (assert) {
  283. const done = assert.async(),
  284. $fixture = $("#qunit-fixture");
  285. $fixture.append('<input type="text" id="testmask" />');
  286. const testmask = document.getElementById("testmask");
  287. Inputmask({
  288. mask: ["9 AAA-AAA", "A 999-999"]
  289. }).mask(testmask);
  290. $("#testmask").Type("a123");
  291. setTimeout(function () {
  292. assert.equal(testmask.value, "A 123-___", "Result " + testmask.value);
  293. done();
  294. }, 0);
  295. }
  296. );
  297. qunit.test("inputmask({ mask: ['99.9', 'X'}) - annames", function (assert) {
  298. const $fixture = $("#qunit-fixture");
  299. $fixture.append('<input type="text" id="testmask" />');
  300. const testmask = document.getElementById("testmask");
  301. Inputmask({
  302. mask: ["99.9", "X", "abc"],
  303. definitions: {
  304. X: {
  305. validator: "[xX]",
  306. cardinality: 1,
  307. casing: "upper"
  308. }
  309. }
  310. }).mask(testmask);
  311. $("#testmask").Type("x");
  312. assert.equal(testmask.value, "X", "Result " + testmask.value);
  313. });
  314. qunit.test(
  315. 'inputmask({ mask: [{ "mask": "###-##-####" }]) - lynxlive',
  316. function (assert) {
  317. const $fixture = $("#qunit-fixture");
  318. $fixture.append('<input type="text" id="testmask" />');
  319. const testmask = document.getElementById("testmask"),
  320. ssns = [
  321. {
  322. mask: "###-##-####"
  323. }
  324. ];
  325. Inputmask({
  326. mask: ssns,
  327. greedy: false,
  328. definitions: {
  329. "#": {
  330. validator: "[0-9]",
  331. cardinality: 1
  332. }
  333. }
  334. }).mask(testmask);
  335. $("#testmask").Type("123121234");
  336. assert.equal(testmask.value, "123-12-1234", "Result " + testmask.value);
  337. }
  338. );
  339. qunit.test("'[9-]AAA-999', '999999' - type 1A - dekdegiv", function (assert) {
  340. const $fixture = $("#qunit-fixture");
  341. $fixture.append('<input type="text" id="testmask" />');
  342. const testmask = document.getElementById("testmask");
  343. Inputmask({
  344. mask: ["[9-]AAA-999", "999999"],
  345. keepStatic: false
  346. }).mask(testmask);
  347. $("#testmask").Type("1a");
  348. assert.equal(testmask.value, "1-A__-___", "Result " + testmask.value);
  349. });
  350. qunit.test("(99 99 999999)|(*{+}) - 12abc - dekdegiv", function (assert) {
  351. const $fixture = $("#qunit-fixture");
  352. $fixture.append('<input type="text" id="testmask" />');
  353. const testmask = document.getElementById("testmask");
  354. Inputmask("(99 99 999999)|(*{+})").mask(testmask);
  355. $("#testmask").Type("12abc");
  356. assert.equal(testmask.value, "12abc", "Result " + testmask.value);
  357. });
  358. qunit.test(
  359. "(99 99 999999)|(*{+}) - 12 34 delete ' 34' + 2abc",
  360. function (assert) {
  361. const $fixture = $("#qunit-fixture");
  362. $fixture.append('<input type="text" id="testmask" />');
  363. const testmask = document.getElementById("testmask");
  364. Inputmask("(99 99 999999)|(*{+})").mask(testmask);
  365. $("#testmask").Type("12 34");
  366. $("#testmask").SendKey(keys.Backspace);
  367. $("#testmask").SendKey(keys.Backspace);
  368. $("#testmask").SendKey(keys.Backspace);
  369. $("#testmask").Type("2abc");
  370. assert.equal(testmask.value, "122abc", "Result " + testmask.value);
  371. }
  372. );
  373. qunit.test("(99 99 999999)|(i{+}) - 12 3abc - dekdegiv", function (assert) {
  374. const $fixture = $("#qunit-fixture");
  375. $fixture.append('<input type="text" id="testmask" />');
  376. const testmask = document.getElementById("testmask");
  377. Inputmask("(99 99 999999)|(*{+})", {
  378. definitions: {
  379. "*": {
  380. validator: ".",
  381. cardinality: 1,
  382. definitionSymbol: "*"
  383. }
  384. },
  385. staticDefinitionSymbol: "*"
  386. }).mask(testmask);
  387. $("#testmask").Type("12 3abc");
  388. assert.equal(testmask.value, "12 3abc", "Result " + testmask.value);
  389. });
  390. qunit.test(
  391. '["(99) 9999-9999","(99) 99999-9999"] - 12123451234 - click front - asyncerror',
  392. function (assert) {
  393. const $fixture = $("#qunit-fixture");
  394. $fixture.append('<input type="text" id="testmask" />');
  395. const testmask = document.getElementById("testmask");
  396. Inputmask(["(99) 9999-9999", "(99) 99999-9999"]).mask(testmask);
  397. $("#testmask").Type("12123451234");
  398. $.caret(testmask, 0);
  399. testmask.focus();
  400. $("#testmask").trigger("click");
  401. assert.equal(
  402. testmask.value,
  403. "(12) 12345-1234",
  404. "Result " + testmask.value
  405. );
  406. }
  407. );
  408. qunit.test(
  409. '["+7(999)999-99-99","+380(99)999-99-99","+375(99)999-99-99"] - andychups',
  410. function (assert) {
  411. const done = assert.async(),
  412. $fixture = $("#qunit-fixture");
  413. $fixture.append('<input type="text" id="testmask" />');
  414. const testmask = document.getElementById("testmask");
  415. Inputmask(
  416. ["+7(999)999-99-99", "+380(99)999-99-99", "+375(99)999-99-99"],
  417. {
  418. keepStatic: false
  419. }
  420. ).mask(testmask);
  421. $("#testmask").Type("3");
  422. setTimeout(function () {
  423. assert.equal(
  424. testmask.inputmask._valueGet(),
  425. "+3__(__)___-__-__",
  426. "Result " + testmask.inputmask._valueGet()
  427. );
  428. done();
  429. }, 0);
  430. }
  431. );
  432. qunit.test(
  433. '["+7(999)999-99-99","+380(99)999-99-99","+375(99)999-99-99"] - andychups',
  434. function (assert) {
  435. const done = assert.async(),
  436. $fixture = $("#qunit-fixture");
  437. $fixture.append('<input type="text" id="testmask" />');
  438. const testmask = document.getElementById("testmask");
  439. Inputmask(
  440. ["+7(999)999-99-99", "+380(99)999-99-99", "+375(99)999-99-99"],
  441. {
  442. keepStatic: false
  443. }
  444. ).mask(testmask);
  445. testmask.focus();
  446. setTimeout(function () {
  447. $("#testmask").trigger("click");
  448. assert.equal(
  449. testmask.inputmask._valueGet(),
  450. "+_(___)___-__-__",
  451. "Result " + testmask.inputmask._valueGet()
  452. );
  453. done();
  454. }, 0);
  455. }
  456. );
  457. qunit.test(
  458. "(9{4} 9{4} 9{4} 9{4})|(9{4} 9{6} 9[5])|(9{9} 9{9}) - 1234123412341234 - necrosisoff ",
  459. function (assert) {
  460. const $fixture = $("#qunit-fixture");
  461. $fixture.append('<input type="text" id="testmask" />');
  462. const testmask = document.getElementById("testmask");
  463. Inputmask("(9{4} 9{4} 9{4} 9{4})|(9{4} 9{6} 9[5])|(9{9} 9{9})", {
  464. keepStatic: true
  465. }).mask(testmask);
  466. testmask.focus();
  467. $("#testmask").Type("1234123412341234");
  468. assert.equal(
  469. testmask.inputmask._valueGet(),
  470. "1234 1234 1234 1234",
  471. "Result " + testmask.inputmask._valueGet()
  472. );
  473. }
  474. );
  475. qunit.test(
  476. "(9{4} 9{4} 9{4} 9{4})|(9{4} 9{6} 9[5])|(9{9} 9{9}) - 12341234123412341 - necrosisoff ",
  477. function (assert) {
  478. const $fixture = $("#qunit-fixture");
  479. $fixture.append('<input type="text" id="testmask" />');
  480. const testmask = document.getElementById("testmask");
  481. Inputmask("(9{4} 9{4} 9{4} 9{4})|(9{4} 9{6} 9[5])|(9{9} 9{9})", {
  482. keepStatic: true
  483. }).mask(testmask);
  484. testmask.focus();
  485. $("#testmask").Type("12341234123412341");
  486. assert.equal(
  487. testmask.inputmask._valueGet(),
  488. "123412341 23412341_",
  489. "Result " + testmask.inputmask._valueGet()
  490. );
  491. }
  492. );
  493. qunit.test(
  494. "mask: option auto-chooses an option rather than denying input - type 3 - #2225",
  495. function (assert) {
  496. const $fixture = $("#qunit-fixture");
  497. $fixture.append('<input type="text" id="testmask" />');
  498. const testmask = document.getElementById("testmask");
  499. Inputmask({
  500. mask: [
  501. "4999 9999 9999 9999",
  502. "5999 9999 9999 9999",
  503. "2999 9999 9999 9999",
  504. "6999 9999 9999 9999 [999]",
  505. "3999 999999 99999"
  506. ],
  507. greedy: false,
  508. keepStatic: false
  509. }).mask(testmask);
  510. testmask.focus();
  511. $("#testmask").Type("3");
  512. assert.equal(
  513. testmask.inputmask._valueGet(),
  514. "3___ ______ _____",
  515. "Result " + testmask.inputmask._valueGet()
  516. );
  517. }
  518. );
  519. qunit.test(
  520. "mask: option auto-chooses an option rather than denying input - type 1 - #2225",
  521. function (assert) {
  522. const $fixture = $("#qunit-fixture");
  523. $fixture.append('<input type="text" id="testmask" />');
  524. const testmask = document.getElementById("testmask");
  525. Inputmask({
  526. mask: [
  527. "4999 9999 9999 9999",
  528. "5999 9999 9999 9999",
  529. "2999 9999 9999 9999",
  530. "6999 9999 9999 9999 [999]",
  531. "3999 999999 99999"
  532. ],
  533. greedy: false,
  534. keepStatic: false
  535. }).mask(testmask);
  536. testmask.focus();
  537. $("#testmask").Type("1");
  538. assert.equal(
  539. testmask.inputmask._valueGet(),
  540. "",
  541. "Result " + testmask.inputmask._valueGet()
  542. );
  543. }
  544. );
  545. }