source: Dev/branches/rest-dojo-ui/client/dojox/encoding/tests/bits.js @ 256

Last change on this file since 256 was 256, checked in by hendrikvanantwerpen, 13 years ago

Reworked project structure based on REST interaction and Dojo library. As
soon as this is stable, the old jQueryUI branch can be removed (it's
kept for reference).

File size: 2.1 KB
Line 
1define(['doh', '../bits'], function(doh, dcb){
2        var msg1 = "The rain in Spain falls mainly on the plain.";
3        var msg2 = "The rain in Spain falls mainly on the plain.1";
4        var msg3 = "The rain in Spain falls mainly on the plain.ab";
5        var msg4 = "The rain in Spain falls mainly on the plain.!@#";
6       
7        var s2b = function(s){
8                var b = [];
9                for(var i = 0; i < s.length; ++i){
10                        b.push(s.charCodeAt(i));
11                }
12                return b;
13        };
14
15        var b2s = function(b){
16                var s = [];
17                dojo.forEach(b, function(c){ s.push(String.fromCharCode(c)); });
18                return s.join("");
19        };
20       
21        var testOut = function(msg){
22                var a = new dcb.OutputStream();
23                for(var i = 0; i < msg.length; ++i){
24                        var v = msg.charCodeAt(i);
25                        var j = Math.floor(Math.random() * 7) + 1;
26                        a.putBits(v >>> (8 - j), j);
27                        a.putBits(v, 8 - j);
28                }
29                return b2s(a.getBuffer());
30        };
31
32        var testIn = function(msg){
33                var a = new dcb.InputStream(s2b(msg), msg.length * 8);
34                var r = [];
35                for(var i = 0; i < msg.length; ++i){
36                        var j = Math.floor(Math.random() * 7) + 1;
37                        r.push((a.getBits(j) << (8 - j)) | a.getBits(8 - j));
38                }
39                return b2s(r);
40        };
41       
42        var test = function(msg){
43                var a = new dcb.InputStream(s2b(msg), msg.length * 8);
44                var o = new dcb.OutputStream();
45                while(a.getWidth() > 0){
46                        var w = Math.min(a.getWidth(), 3);
47                        o.putBits(a.getBits(w), w);
48                }
49                return b2s(o.getBuffer());
50        };
51
52        doh.register("dojox.encoding.tests.bits", [
53                function testBitsOut1(t){ t.assertEqual(msg1, testOut(msg1)); },
54                function testBitsOut2(t){ t.assertEqual(msg2, testOut(msg2)); },
55                function testBitsOut3(t){ t.assertEqual(msg3, testOut(msg3)); },
56                function testBitsOut4(t){ t.assertEqual(msg4, testOut(msg4)); },
57                function testBitsIn1(t){ t.assertEqual(msg1, testIn(msg1)); },
58                function testBitsIn2(t){ t.assertEqual(msg2, testIn(msg2)); },
59                function testBitsIn3(t){ t.assertEqual(msg3, testIn(msg3)); },
60                function testBitsIn4(t){ t.assertEqual(msg4, testIn(msg4)); },
61                function testBits1(t){ t.assertEqual(msg1, test(msg1)); },
62                function testBits2(t){ t.assertEqual(msg2, test(msg2)); },
63                function testBits3(t){ t.assertEqual(msg3, test(msg3)); },
64                function testBits4(t){ t.assertEqual(msg4, test(msg4)); }
65        ]);
66});
Note: See TracBrowser for help on using the repository browser.