String.test.coffee

  • require('../../src/fluentnode')
    
    expect = require('chai').expect
    
    describe '| js-native | String',->
      value = "abc123"
    
      it 'append', ->
        using value,->
          @.append(        ).assert_Is(value)
          @.append(''      ).assert_Is(value)
          @.append(null    ).assert_Is(value)
          @.append('a'     ).assert_Is(value + 'a')
          @.append('abc'   ).assert_Is(value + 'abc')
          @.append('abc123').assert_Is(value + 'abc123')
    
          @.append.assert_Is @.add
    
      it 'after',->
          value.after.assert_Is_Function()
          value.after('3'  ).assert_Is(''      )
          value.after('2'  ).assert_Is('3'     )
          value.after('123').assert_Is(''      )
          value.after('b'  ).assert_Is('c123'  )
          value.after('bc1').assert_Is('23'    )
          value.after('xxx').assert_Is(''      )
          value.after(null ).assert_Is(''      )
          value.after(''   ).assert_Is('abc123')
          'abb'.after('b'  ).assert_Is('b'     )
          'a.b'.after('.'  ).assert_Is('b'     )
          'a.b.c'.after('.').assert_Is('b.c'   )
    
    
      it 'after_Last',->
          value.after_Last.assert_Is_Function()
          value.after_Last('3'  ).assert_Is(''     )
          value.after_Last('2'  ).assert_Is('3'    )
          value.after_Last('123').assert_Is(''     )
          value.after_Last('b'  ).assert_Is('c123' )
          value.after_Last('bc1').assert_Is('23'   )
          value.after_Last('xxx').assert_Is(''     )
          value.after_Last(null ).assert_Is(''     )
          value.after_Last(''   ).assert_Is(''     )
          'abb'.after_Last('b'  ).assert_Is(''     )
          'a.b'.after_Last('.'  ).assert_Is('b'    )
          'a.b.c'.after_Last('.').assert_Is('c'    )
    
      it 'before',->
          value.before.assert_Is_Function()
          value.before('3'  ).assert_Is('abc12')
          value.before('2'  ).assert_Is('abc1' )
          value.before('123').assert_Is('abc'  )
          value.before('b'  ).assert_Is('a'    )
          value.before('bc1').assert_Is('a'    )
          value.before('xxx').assert_Is(''     )
          value.before(''   ).assert_Is(''     )
          value.before(null ).assert_Is(''     )
          'abb'.before('b'  ).assert_Is('a'    )
          'a.b'.before('.'  ).assert_Is('a'    )
          'a.b.c'.before('.').assert_Is('a'    )
    
    
      it 'before_Last',->
          value.before_Last.assert_Is_Function()
          value.before_Last('3'  ).assert_Is('abc12' )
          value.before_Last('2'  ).assert_Is('abc1'  )
          value.before_Last('123').assert_Is('abc'   )
          value.before_Last('b'  ).assert_Is('a'     )
          value.before_Last('bc1').assert_Is('a'     )
          value.before_Last('xxx').assert_Is(''      )
          value.before_Last(null ).assert_Is(''      )
          value.before_Last(''   ).assert_Is('abc123')
          'abb'.before_Last('b'  ).assert_Is('ab'    )
          'a.b'.before_Last('.'  ).assert_Is('a'     )
          'a.b.c'.before_Last('.').assert_Is('a.b'   )
    
      it 'contains',->
          value.contains.assert_Is_Function()
          value.contains('3'         ).assert_Is_True()
          value.contains('2'         ).assert_Is_True()
          value.contains('123'       ).assert_Is_True()
          value.contains(value       ).assert_Is_True()
          value.contains(value + '1' ).assert_Is_False()
          value.contains('1' + value ).assert_Is_False()
    
          value.contains(['1']       ).assert_Is_True()
          value.contains(['1','2']   ).assert_Is_True()
          value.contains(['1','abc1']).assert_Is_True()
          value.contains(['d','abc1']).assert_Is_False()
    
          value.contains(/a.c/ ).assert_Is_True()
          value.contains(/1.3/ ).assert_Is_True()
          value.contains(/a.*3/).assert_Is_True()
          value.contains(/ab.1/).assert_Is_True()
          value.contains(/ac.2/).assert_Is_False()
    
    
      it 'ends_With',->
        using value, ->
          @.ends_With.assert_Is_Function()
          @.ends_With('3'         ).assert_Is_True()
          @.ends_With('2'         ).assert_Is_False()
          @.ends_With('123'       ).assert_Is_True()
          @.ends_With(value       ).assert_Is_True()
          @.ends_With(value + '1' ).assert_Is_False()
          @.ends_With('1' + value ).assert_Is_False()
          @.ends_With(''          ).assert_Is_False()
          @.ends_With(null        ).assert_Is_False()
          @.ends_With(undefined   ).assert_Is_False()
          @.assert_Is(value)
    
      it 'is', ->
        'a'.is('a').assert_True()
        'a'.is('b').assert_False()
        'b'.is('a').assert_False()
        '' .is('' ).assert_True()
        '' .is('a').assert_False()
    
      it 'isnt, is_Not', ->
        'a'.is_Not('a').assert_False()
        'a'.is_Not('b').assert_True()
        'b'.is_Not('a').assert_True()
        '' .is_Not('' ).assert_False()
        '' .is_Not('a').assert_True()
        '' .is_Not.assert_Is ''.isnt
    
      it 'lines', ->
        "abcdefgf".lines().assert_Is ['abcdefgf']
        "a\nd\ngf".lines().assert_Is ['a','d','gf']
        "a\r\n_gf".lines().assert_Is ['a','_gf']
        "a\n\r_gf".lines().assert_Is ['a','','_gf']
        "a\u2028f".lines().assert_Is ['a','f']
        "a\u2029f".lines().assert_Is ['a','f']
        ""        .lines().assert_Is ['']
    
        "\r\n\n\r\u2028\u2029".lines().assert_Is ['','','','','','']
        "1\r\n2\n3\r4\u20285\u20296".lines().assert_Is ['1','2','3','4','5','6']
    
        ''.lines.assert_Is ''.split_Lines
    
      it 'lower', ->
          expect(value.lower).to.be.an('Function')
          expect(value.lower()        ).to.equal(value.toLowerCase())
          expect(value.lower().upper()).to.equal(value.toUpperCase())
    
      it 'not_Contains',->
          value.not_Contains.assert_Is_Function()
          value.not_Contains('3'         ).assert_Is_False()
          value.not_Contains('2'         ).assert_Is_False()
          value.not_Contains('123'       ).assert_Is_False()
          value.not_Contains(value       ).assert_Is_False()
          value.not_Contains(value + '1' ).assert_Is_True()
          value.not_Contains('1' + value ).assert_Is_True()
    
      it 'only_Letters', ->
        'aaa'.only_Letters().assert_Is 'aaa'
        'aAa'.only_Letters().assert_Is 'aAa'
        'aaa'.only_Letters().assert_Is_Not 'bbb'
        'a 1'.only_Letters().assert_Is 'a--'
        'A!"'.only_Letters().assert_Is 'A--'
        '/<>'.only_Letters().assert_Is '---'
        'abcd-ABCD_1234.<h1>*!@{}[]'.only_Letters().assert_Is 'abcd-ABCD-------h---------'
        '!@£$%^&*(){}:"|<>?[];\'\,/'.only_Letters().assert_Is '-'.repeat(24)
    
      it 'only_Numbers', ->
        '1aa'.only_Numbers().assert_Is '1--'
        '2Aa'.only_Numbers().assert_Is '2--'
        '123'.only_Numbers().assert_Is '123'
        'aaa'.only_Numbers().assert_Is_Not 'bbb'
        '1  '.only_Numbers().assert_Is '1--'
        'A1"'.only_Numbers().assert_Is '-1-'
        '/<>'.only_Numbers().assert_Is '---'
        'abcd-ABCD_1234.<h1>*!@{}[]'.only_Numbers().assert_Is '----------1234---1--------'
        '!@£$%^&*(){}:"|<>?[];\'\,/'.only_Numbers().assert_Is '-'.repeat(24)
    
      it 'remove', ->
        using value,->
          @.remove('a'  ).assert_Is 'bc123'
          @.remove('b'  ).assert_Is 'ac123'
          @.remove('abc').assert_Is '123'
          @.remove('123').assert_Is 'abc'
          (@+@).remove('a'   ).assert_Is 'bc123'.twice()
          (@+@).remove('bc12').assert_Is 'a3'   .twice()
    
      it 'repeat', ->
        'a' .repeat(0).assert_Is ''
        'a' .repeat(1).assert_Is 'a'
        'a' .repeat(2).assert_Is 'aa'
        'a' .repeat(5).assert_Is 'aaaaa'
        'ab'.repeat(5).assert_Is 'ababababab'
    
        ''  .repeat(5   ).assert_Is ''
        'a' .repeat('a' ).assert_Is ''
        'a' .repeat(null).assert_Is ''
    
      it 'size', ->
          expect(value.size).to.be.an('Function')
          expect(''.size()                 ).to.equal(0)
          expect(value.size()              ).to.equal(6)
          expect(value.append('abc').size()).to.equal(9)
    
      it 'starts_With',->
        using value,->
          @.starts_With.assert_Is_Function()
          @.starts_With('a'     ).assert_Is_True()
          @.starts_With('b'     ).assert_Is_False()
          @.starts_With('abc'   ).assert_Is_True()
          @.starts_With(value   ).assert_Is_True()
          @.starts_With(@ + 'a' ).assert_Is_False()
          @.starts_With( 'a' + @).assert_Is_False()
          @.starts_With(''      ).assert_Is_False()
          @.assert_Is(@)
    
      it 'to_Safe_String', ->
        'aaa'.to_Safe_String().assert_Is 'aaa'
        'aaa'.to_Safe_String().assert_Is_Not 'bbb'
        'a  '.to_Safe_String().assert_Is 'a--'
        'a!"'.to_Safe_String().assert_Is 'a--'
        '/<>'.to_Safe_String().assert_Is '---'
        'abcd-ABCD_1234.<h1>*!@{}[]'.to_Safe_String().assert_Is 'abcd-abcd_1234.-h1--------'
        '!@£$%^&*(){}:"|<>?[];\'\,/'.to_Safe_String().assert_Is '-'.repeat(24)
    
      it 'trim', ->
          value.trim.assert_Is_Function()
          value.trim().assert_Is    (value)
          'a 1'.trim().assert_Is    ('a 1')
          'a1 '.trim().assert_Is    ('a1' )
          ' 1 '.trim().assert_Is    ('1'  )
          '   '.trim().assert_Is    (''  )
          'a1 '.trim().assert_Is_Not('a 1')
          ' 1 '.trim().assert_Is_Not('a 1')
          '   '.trim().assert_Is_Not('a 1')
    
      it 'twice', ->
        using value,->
          @  .twice().assert_Is @ + @
          'a'.twice().assert_Is 'aa'
          '' .twice().assert_Is ''
    
    
      it 'json_Parse',->
        '{ "a" : 42 }'.json_Parse().assert_Is { a : '42' }
        "{}"          .json_Parse().assert_Is {}
        ''            .json_Parse().assert_Is {}
        'aaaa'        .json_Parse().assert_Is {}
        '{a:12}'      .json_Parse().assert_Is {}
    
    
      it 'json_Valid',->
        '{ "a" : 42 }'.json_Valid().assert_True
        "{}"          .json_Valid().assert_True
        ''            .json_Valid().assert_False
        'aaaa'        .json_Valid().assert_False
        '{a:12}'      .json_Valid().assert_False
    
      it 'is_Local_Url',->
        ''                              .is_Local_Url().assert_Is_False()
        '//a/..'                        .is_Local_Url().assert_Is_False() #//a/..
        '//a'                           .is_Local_Url().assert_Is_False() #//a
        '/\\abc'                        .is_Local_Url().assert_Is_False() #/\abc
        'https://foo/bar'               .is_Local_Url().assert_Is_False()
        'http://foo/bar'                .is_Local_Url().assert_Is_False()
        'foo/bar'                       .is_Local_Url().assert_Is_False()
        'file:///c:/path/to/the%20f.txt'.is_Local_Url().assert_Is_False()
        '////host/share/dir/file.txt'   .is_Local_Url().assert_Is_False()
        'null'                          .is_Local_Url().assert_Is_False()
        '%2fAccount%2fChangePassword%2f'.is_Local_Url().assert_Is_True()
        '~/foo/bar'                     .is_Local_Url().assert_Is_True()
        '/foo/bar'                      .is_Local_Url().assert_Is_True()

O2 Platform by o2platform