github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/public/libs/vue-1.0.24/test/unit/specs/util/lang_spec.js (about) 1 var _ = require('src/util') 2 3 describe('Util - Language Enhancement', function () { 4 it('hasOwn', function () { 5 var obj1 = { a: 1 } 6 expect(_.hasOwn(obj1, 'a')).toBe(true) 7 var obj2 = Object.create(null) 8 obj2.a = 2 9 expect(_.hasOwn(obj2, 'a')).toBe(true) 10 }) 11 12 it('isLiteral', function () { 13 expect(_.isLiteral('123')).toBe(true) 14 expect(_.isLiteral('12.3')).toBe(true) 15 expect(_.isLiteral('true')).toBe(true) 16 expect(_.isLiteral(' false ')).toBe(true) 17 expect(_.isLiteral('"foo"')).toBe(true) 18 expect(_.isLiteral(" 'foo' ")).toBe(true) 19 expect(_.isLiteral('a.b.c')).toBe(false) 20 expect(_.isLiteral('1 + 1')).toBe(false) 21 }) 22 23 it('toString', function () { 24 expect(_._toString('foo')).toBe('foo') 25 expect(_._toString(1.234)).toBe('1.234') 26 expect(_._toString(null)).toBe('') 27 expect(_._toString(undefined)).toBe('') 28 }) 29 30 it('toNumber', function () { 31 expect(_.toNumber('12')).toBe(12) 32 expect(_.toNumber('1e5')).toBe(1e5) 33 expect(_.toNumber('0x2F')).toBe(0x2F) 34 expect(_.toNumber(null)).toBe(null) 35 expect(_.toNumber(true)).toBe(true) 36 expect(_.toNumber('hello')).toBe('hello') 37 }) 38 39 it('strip quotes', function () { 40 expect(_.stripQuotes('"123"')).toBe('123') 41 expect(_.stripQuotes("'fff'")).toBe('fff') 42 expect(_.stripQuotes("'fff")).toBe("'fff") 43 }) 44 45 it('camelize', function () { 46 expect(_.camelize('abc')).toBe('abc') 47 expect(_.camelize('some-long-name')).toBe('someLongName') 48 }) 49 50 it('hyphenate', function () { 51 expect(_.hyphenate('fooBar')).toBe('foo-bar') 52 expect(_.hyphenate('a1BfC')).toBe('a1-bf-c') 53 expect(_.hyphenate('already-With-Hyphen')).toBe('already-with-hyphen') 54 }) 55 56 it('classify', function () { 57 expect(_.classify('abc')).toBe('Abc') 58 expect(_.classify('foo-bar')).toBe('FooBar') 59 expect(_.classify('foo_bar')).toBe('FooBar') 60 expect(_.classify('foo/bar')).toBe('FooBar') 61 }) 62 63 it('bind', function () { 64 var original = function (a) { 65 return this.a + a 66 } 67 var ctx = { a: 'ctx a ' } 68 var bound = _.bind(original, ctx) 69 var res = bound('arg a') 70 expect(res).toBe('ctx a arg a') 71 }) 72 73 it('toArray', function () { 74 // should make a copy of original array 75 var arr = [1, 2, 3] 76 var res = _.toArray(arr) 77 expect(Array.isArray(res)).toBe(true) 78 expect(res.toString()).toEqual('1,2,3') 79 expect(res).not.toBe(arr) 80 81 // should work on arguments 82 ;(function () { 83 var res = _.toArray(arguments) 84 expect(Array.isArray(res)).toBe(true) 85 expect(res.toString()).toEqual('1,2,3') 86 })(1, 2, 3) 87 }) 88 89 it('extend', function () { 90 var from = {a: 1, b: 2} 91 var to = {} 92 var res = _.extend(to, from) 93 expect(to.a).toBe(from.a) 94 expect(to.b).toBe(from.b) 95 expect(res).toBe(to) 96 }) 97 98 it('isObject', function () { 99 expect(_.isObject({})).toBe(true) 100 expect(_.isObject([])).toBe(true) 101 expect(_.isObject(null)).toBeFalsy() 102 expect(_.isObject(123)).toBeFalsy() 103 expect(_.isObject(true)).toBeFalsy() 104 expect(_.isObject('foo')).toBeFalsy() 105 expect(_.isObject(undefined)).toBeFalsy() 106 expect(_.isObject(function () {})).toBeFalsy() 107 }) 108 109 it('isPlainObject', function () { 110 expect(_.isPlainObject({})).toBe(true) 111 expect(_.isPlainObject([])).toBe(false) 112 expect(_.isPlainObject(null)).toBe(false) 113 expect(_.isPlainObject(null)).toBeFalsy() 114 expect(_.isPlainObject(123)).toBeFalsy() 115 expect(_.isPlainObject(true)).toBeFalsy() 116 expect(_.isPlainObject('foo')).toBeFalsy() 117 expect(_.isPlainObject(undefined)).toBeFalsy() 118 expect(_.isPlainObject(function () {})).toBe(false) 119 expect(_.isPlainObject(window)).toBe(false) 120 }) 121 122 it('isArray', function () { 123 expect(_.isArray([])).toBe(true) 124 expect(_.isArray({})).toBe(false) 125 expect(_.isArray(arguments)).toBe(false) 126 }) 127 128 it('define', function () { 129 var obj = {} 130 _.def(obj, 'test', 123) 131 expect(obj.test).toBe(123) 132 var desc = Object.getOwnPropertyDescriptor(obj, 'test') 133 expect(desc.enumerable).toBe(false) 134 135 _.def(obj, 'test2', 123, true) 136 expect(obj.test2).toBe(123) 137 desc = Object.getOwnPropertyDescriptor(obj, 'test2') 138 expect(desc.enumerable).toBe(true) 139 }) 140 141 it('debounce', function (done) { 142 var count = 0 143 var fn = _.debounce(function () { 144 count++ 145 }, 100) 146 fn() 147 setTimeout(fn, 10) 148 setTimeout(fn, 20) 149 setTimeout(function () { 150 expect(count).toBe(0) 151 }, 30) 152 setTimeout(function () { 153 expect(count).toBe(1) 154 done() 155 }, 200) 156 }) 157 158 it('looseEqual', function () { 159 expect(_.looseEqual(1, '1')).toBe(true) 160 expect(_.looseEqual(null, undefined)).toBe(true) 161 expect(_.looseEqual({a: 1}, {a: 1})).toBe(true) 162 expect(_.looseEqual({a: 1}, {a: 2})).toBe(false) 163 expect(_.looseEqual({}, [])).toBe(false) 164 }) 165 })