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  })