Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* eslint-env mocha */
  2. 'use strict';
  3.  
  4. const assert = require('assert');
  5.  
  6. const check = require('./check');
  7.  
  8. check.init();
  9.  
  10. describe('Check', function () {
  11.     const person = {name: 'John', age: 20};
  12.     const numbers = [1, 2, 3];
  13.     const func = function (a, b) {
  14.         return a + b;
  15.     };
  16.     const str = 'some string';
  17.  
  18.     it('should check that target hasKeys', function () {
  19.         assert.ok(person.check.hasKeys(['name', 'age']));
  20.     });
  21.  
  22.     it('should check that target hasValueType', function () {
  23.         assert.ok(person.check.hasValueType('name', String));
  24.     });
  25.  
  26.     it('should check that target hasKeys', function () {
  27.         assert.ok(numbers.check.hasKeys(['0', '1', '2']));
  28.     });
  29.  
  30.     it('should check that target hasLength', function () {
  31.         assert.ok(numbers.check.hasLength(3));
  32.     });
  33.  
  34.     it('should check that target containsValues', function () {
  35.         assert.ok(numbers.check.containsValues([2, 1]));
  36.     });
  37.  
  38.     it('should check that target hasParamsCount', function () {
  39.         assert.ok(func.check.hasParamsCount(2));
  40.     });
  41.  
  42.     it('should check that target hasWordsCount', function () {
  43.         assert.ok(str.check.hasWordsCount(2));
  44.     });
  45.  
  46.     it('Объект containKeys', function () {
  47.         const obj = {a: 'aaa', b: 'b'};
  48.         assert.ok(obj.check.containsKeys(['a', 'b']));
  49.         assert.ok(obj.check.containsKeys(['a']));
  50.         assert.ok(obj.check.containsKeys(['b']));
  51.         assert.ok(!obj.check.containsKeys(['c']));
  52.         assert.ok(!obj.check.containsKeys(['a', 'b', 'c']));
  53.  
  54.         assert.ok(!obj.check.not.containsKeys(['a', 'b']));
  55.         assert.ok(!obj.check.not.containsKeys(['a']));
  56.         assert.ok(!obj.check.not.containsKeys(['b']));
  57.         assert.ok(obj.check.not.containsKeys(['c']));
  58.         assert.ok(obj.check.not.containsKeys(['a', 'b', 'c']));
  59.     });
  60.  
  61.     it('Массив containKeys', function () {
  62.         assert.ok(numbers.check.containsKeys(['0']));
  63.         assert.ok(numbers.check.containsKeys(['0', '1', '2']));
  64.         assert.ok(!numbers.check.containsKeys(['3']));
  65.         assert.ok(!numbers.check.containsKeys(['0', '1', '2', '3']));
  66.  
  67.         assert.ok(!numbers.check.not.containsKeys(['0']));
  68.         assert.ok(!numbers.check.not.containsKeys(['0', '1', '2']));
  69.         assert.ok(numbers.check.not.containsKeys(['3']));
  70.         assert.ok(numbers.check.not.containsKeys(['0', '1', '2', '3']));
  71.     });
  72.  
  73.     it('Объект hasKeys', function () {
  74.         const obj = {a: 'aaa', b: 'b'};
  75.         assert.ok(obj.check.hasKeys(['a', 'b']));
  76.         assert.ok(!obj.check.hasKeys(['a']));
  77.         assert.ok(!obj.check.hasKeys(['b']));
  78.         assert.ok(!obj.check.hasKeys(['c']));
  79.         assert.ok(!obj.check.hasKeys(['a', 'b', 'c']));
  80.  
  81.         assert.ok(!obj.check.not.hasKeys(['a', 'b']));
  82.         assert.ok(obj.check.not.hasKeys(['a']));
  83.         assert.ok(obj.check.not.hasKeys(['b']));
  84.         assert.ok(obj.check.not.hasKeys(['c']));
  85.         assert.ok(obj.check.not.hasKeys(['a', 'b', 'c']));
  86.     });
  87.  
  88.     it('Массив hasKeys', function () {
  89.         assert.ok(!numbers.check.hasKeys(['0']));
  90.         assert.ok(numbers.check.hasKeys(['0', '1', '2']));
  91.         assert.ok(!numbers.check.hasKeys(['3']));
  92.         assert.ok(!numbers.check.hasKeys(['0', '1', '2', '3']));
  93.  
  94.         assert.ok(numbers.check.not.hasKeys(['0']));
  95.         assert.ok(!numbers.check.not.hasKeys(['0', '1', '2']));
  96.         assert.ok(numbers.check.not.hasKeys(['3']));
  97.         assert.ok(numbers.check.not.hasKeys(['0', '1', '2', '3']));
  98.     });
  99.  
  100.     it('Объект containsValues', function () {
  101.         assert.ok(person.check.containsValues(['John', 20]));
  102.         assert.ok(person.check.containsValues(['John']));
  103.         assert.ok(person.check.containsValues([20]));
  104.         assert.ok(!person.check.containsValues(['smth']));
  105.         assert.ok(!person.check.containsValues([20, 'smth']));
  106.  
  107.         assert.ok(!person.check.not.containsValues(['John', 20]));
  108.         assert.ok(!person.check.not.containsValues(['John']));
  109.         assert.ok(!person.check.not.containsValues([20]));
  110.         assert.ok(person.check.not.containsValues(['smth']));
  111.         assert.ok(person.check.not.containsValues([20, 'smth']));
  112.     });
  113.  
  114.     it('Массив containsValues', function () {
  115.         assert.ok(numbers.check.containsValues([1, 2, 3]));
  116.         assert.ok(numbers.check.containsValues([1, 3]));
  117.         assert.ok(numbers.check.containsValues([1]));
  118.         assert.ok(!numbers.check.containsValues([4]));
  119.         assert.ok(!numbers.check.containsValues([0, 1, 2]));
  120.  
  121.         assert.ok(!numbers.check.not.containsValues([1, 2, 3]));
  122.         assert.ok(!numbers.check.not.containsValues([1, 3]));
  123.         assert.ok(!numbers.check.not.containsValues([1]));
  124.         assert.ok(numbers.check.not.containsValues([4]));
  125.         assert.ok(numbers.check.not.containsValues([0, 1, 2]));
  126.     });
  127.  
  128.     it('Объект hasValues', function () {
  129.         assert.ok(person.check.hasValues(['John', 20]));
  130.         assert.ok(!person.check.hasValues(['John']));
  131.         assert.ok(!person.check.hasValues([20]));
  132.         assert.ok(!person.check.hasValues(['smth']));
  133.         assert.ok(!person.check.hasValues([20, 'smth']));
  134.  
  135.         assert.ok(!person.check.not.hasValues(['John', 20]));
  136.         assert.ok(person.check.not.hasValues(['John']));
  137.         assert.ok(person.check.not.hasValues([20]));
  138.         assert.ok(person.check.not.hasValues(['smth']));
  139.         assert.ok(person.check.not.hasValues([20, 'smth']));
  140.     });
  141.  
  142.     it('Массив hasValues', function () {
  143.         assert.ok(numbers.check.hasValues([1, 2, 3]));
  144.         assert.ok(!numbers.check.hasValues([1, 3]));
  145.         assert.ok(!numbers.check.hasValues([1]));
  146.         assert.ok(!numbers.check.hasValues([4]));
  147.         assert.ok(!numbers.check.hasValues([0, 1, 2]));
  148.  
  149.         assert.ok(!numbers.check.not.hasValues([1, 2, 3]));
  150.         assert.ok(numbers.check.not.hasValues([1, 3]));
  151.         assert.ok(numbers.check.not.hasValues([1]));
  152.         assert.ok(numbers.check.not.hasValues([4]));
  153.         assert.ok(numbers.check.not.hasValues([0, 1, 2]));
  154.     });
  155.  
  156.     it('Объект hasValueType`', function () {
  157.         assert.ok(person.check.hasValueType('name', String));
  158.         assert.ok(!person.check.hasValueType('name', Number));
  159.         assert.ok(person.check.hasValueType('age', Number));
  160.         assert.ok(!person.check.hasValueType('age', String));
  161.  
  162.         assert.ok(!person.check.not.hasValueType('name', String));
  163.         assert.ok(person.check.not.hasValueType('name', Number));
  164.         assert.ok(!person.check.not.hasValueType('age', Number));
  165.         assert.ok(person.check.not.hasValueType('age', String));
  166.         let obj = {
  167.             names: ['Dims', 'Nast'],
  168.             getNums() {
  169.                 return '123';
  170.             }
  171.         };
  172.         assert.ok(obj.check.hasValueType('names', Array));
  173.         assert.ok(!obj.check.hasValueType('names', Function));
  174.         assert.ok(obj.check.hasValueType('getNums', Function));
  175.         assert.ok(!obj.check.hasValueType('getNums', Array));
  176.  
  177.         assert.ok(!obj.check.not.hasValueType('names', Array));
  178.         assert.ok(obj.check.not.hasValueType('names', Function));
  179.         assert.ok(!obj.check.not.hasValueType('getNums', Function));
  180.         assert.ok(obj.check.not.hasValueType('getNums', Array));
  181.     });
  182.     // Если типа нет, то что делать?
  183.     it('Массив hasValueType`', function () {
  184.         let f = () => '123';
  185.         const arr = [numbers, f, 123, '123'];
  186.         assert.ok(arr.check.hasValueType('0', Array));
  187.         assert.ok(!arr.check.hasValueType('0', Number));
  188.         assert.ok(arr.check.hasValueType('1', Function));
  189.         assert.ok(!arr.check.hasValueType('1', Number));
  190.         assert.ok(arr.check.hasValueType('2', Number));
  191.         assert.ok(!arr.check.hasValueType('2', String));
  192.         assert.ok(arr.check.hasValueType('3', String));
  193.         assert.ok(!arr.check.hasValueType('3', Array));
  194.  
  195.         assert.ok(!arr.check.not.hasValueType('0', Array));
  196.         assert.ok(arr.check.not.hasValueType('0', Number));
  197.         assert.ok(!arr.check.not.hasValueType('1', Function));
  198.         assert.ok(arr.check.not.hasValueType('1', Number));
  199.         assert.ok(!arr.check.not.hasValueType('2', Number));
  200.         assert.ok(arr.check.not.hasValueType('2', String));
  201.         assert.ok(!arr.check.not.hasValueType('3', String));
  202.         assert.ok(arr.check.not.hasValueType('3', Array));
  203.     });
  204.  
  205.     it('Массив hasLength`', function () {
  206.         assert.ok(numbers.check.hasLength(3));
  207.         assert.ok(!numbers.check.hasLength(0));
  208.         assert.ok(!numbers.check.hasLength(4));
  209.  
  210.         assert.ok(!numbers.check.not.hasLength(3));
  211.         assert.ok(numbers.check.not.hasLength(0));
  212.         assert.ok(numbers.check.not.hasLength(4));
  213.     });
  214.  
  215.     it('Строка hasLength`', function () {
  216.         const s = '123';
  217.         assert.ok(s.check.hasLength(3));
  218.         assert.ok(!s.check.hasLength(0));
  219.         assert.ok(!s.check.hasLength(4));
  220.  
  221.         assert.ok(!s.check.not.hasLength(3));
  222.         assert.ok(s.check.not.hasLength(0));
  223.         assert.ok(s.check.not.hasLength(4));
  224.     });
  225.  
  226.     it('Строка hasWordsCount`', function () {
  227.         assert.ok('1 2 3'.check.hasWordsCount(3));
  228.         assert.ok(!'1 2 3'.check.hasWordsCount(2));
  229.         assert.ok(''.check.hasWordsCount(0));
  230.         assert.ok(!''.check.hasWordsCount(1));
  231.         assert.ok('1  2'.check.hasWordsCount(2));
  232.         assert.ok(!'1  2'.check.hasWordsCount(3));
  233.  
  234.         assert.ok(!'1 2 3'.check.not.hasWordsCount(3));
  235.         assert.ok('1 2 3'.check.not.hasWordsCount(2));
  236.         assert.ok(!''.check.not.hasWordsCount(0));
  237.         assert.ok(''.check.not.hasWordsCount(1));
  238.         assert.ok(!'1  2'.check.not.hasWordsCount(2));
  239.         assert.ok('1  2'.check.not.hasWordsCount(3));
  240.     });
  241.  
  242.     it('Функция hasParamsCount', function () {
  243.         const f1 = function (a, b) {
  244.             return a + b;
  245.         };
  246.         const f2 = function () {
  247.             return 123;
  248.         };
  249.         const f3 = function (a, b, c) {
  250.             let g = 6;
  251.  
  252.             return a + b + c + g;
  253.         };
  254.         assert.ok(f1.check.hasParamsCount(2));
  255.         assert.ok(!f1.check.hasParamsCount(1));
  256.         assert.ok(f2.check.hasParamsCount(0));
  257.         assert.ok(!f2.check.hasParamsCount(1));
  258.         assert.ok(f3.check.hasParamsCount(3));
  259.         assert.ok(!f3.check.hasParamsCount(4));
  260.  
  261.         assert.ok(!f1.check.not.hasParamsCount(2));
  262.         assert.ok(f1.check.not.hasParamsCount(1));
  263.         assert.ok(!f2.check.not.hasParamsCount(0));
  264.         assert.ok(f2.check.not.hasParamsCount(1));
  265.         assert.ok(!f3.check.not.hasParamsCount(3));
  266.         assert.ok(f3.check.not.hasParamsCount(4));
  267.     });
  268.  
  269.     const wrappedNull = check.wrap(null);
  270.     const wrappedNumbers = check.wrap([1, 2, 3]);
  271.     const wrappedPerson = check.wrap({name: 'Dims', age: 20});
  272.     const wrappedFunction = check.wrap((a, b) => a + b);
  273.     const wrappedString = check.wrap('word1 word2 word3');
  274.  
  275.     it('wrap isNull', function () {
  276.         assert.ok(wrappedNull.isNull());
  277.         assert.ok(!wrappedFunction.isNull());
  278.         assert.ok(!wrappedNumbers.isNull());
  279.         assert.ok(!wrappedPerson.isNull());
  280.         assert.ok(!wrappedString.isNull());
  281.  
  282.         assert.ok(!wrappedNull.not.isNull());
  283.         assert.ok(wrappedFunction.not.isNull());
  284.         assert.ok(wrappedNumbers.not.isNull());
  285.         assert.ok(wrappedPerson.not.isNull());
  286.         assert.ok(wrappedString.not.isNull());
  287.     });
  288.  
  289.     it('wrap containsKeys', function () {
  290.         assert.ok(wrappedPerson.containsKeys(['name']));
  291.         assert.ok(wrappedNumbers.containsKeys(['0']));
  292.         assert.ok(!wrappedNull.containsKeys(['0']));
  293.         assert.ok(!wrappedFunction.containsKeys(['0']));
  294.         assert.ok(!wrappedString.containsKeys(['0']));
  295.  
  296.         assert.ok(!wrappedPerson.not.containsKeys(['name']));
  297.         assert.ok(!wrappedNumbers.not.containsKeys(['0']));
  298.         assert.ok(!wrappedNull.not.containsKeys(['0']));
  299.         assert.ok(!wrappedFunction.not.containsKeys(['0']));
  300.         assert.ok(!wrappedString.not.containsKeys(['0']));
  301.     });
  302.  
  303.     it('wrap hasKeys', function () {
  304.         assert.ok(wrappedPerson.hasKeys(['name', 'age']));
  305.         assert.ok(!wrappedPerson.hasKeys(['name']));
  306.         assert.ok(wrappedNumbers.hasKeys(['0', '1', '2']));
  307.         assert.ok(!wrappedNumbers.hasKeys(['0', '1']));
  308.  
  309.         assert.ok(!wrappedPerson.not.hasKeys(['name', 'age']));
  310.         assert.ok(wrappedPerson.not.hasKeys(['name']));
  311.         assert.ok(!wrappedNumbers.not.hasKeys(['0', '1', '2']));
  312.         assert.ok(wrappedNumbers.not.hasKeys(['0', '1']));
  313.     });
  314.  
  315.  
  316. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement