@@ -4,6 +4,30 @@ var test = require('tape').test;
4
4
5
5
var asn1 = require ( 'asn1' ) ;
6
6
7
+ var Buffer = require ( 'buffer' ) . Buffer ;
8
+
9
+ // Buffer.compare was only added on node 0.11.13
10
+ var areBuffersEqual = function areBuffersEqual ( bufA , bufB ) {
11
+ if ( ! ( Buffer . isBuffer ( bufA ) && Buffer . isBuffer ( bufB ) ) ) {
12
+ return false ;
13
+ }
14
+
15
+ if ( typeof Buffer . compare === 'function' ) {
16
+ return Buffer . compare ( bufA , bufB ) === 0 ;
17
+ }
18
+
19
+ var len = bufA . length ;
20
+ if ( len !== bufB . length ) {
21
+ return false ;
22
+ }
23
+ for ( var i = 0 ; i < len ; i ++ ) {
24
+ if ( bufA . readUInt8 ( i ) !== bufB . readUInt8 ( i ) ) {
25
+ return false ;
26
+ }
27
+ }
28
+ return true ;
29
+ } ;
30
+
7
31
8
32
///--- Globals
9
33
@@ -37,6 +61,58 @@ test('new with args', function (t) {
37
61
t . ok ( req ) ;
38
62
t . equal ( req . requestName , '1.2.3.4' ) ;
39
63
t . equal ( req . requestValue , 'test' ) ;
64
+ t . ok ( areBuffersEqual ( req . requestValueBuffer , new Buffer ( 'test' , 'utf8' ) ) ) ;
65
+ t . equal ( req . value , 'test' ) ;
66
+ t . ok ( areBuffersEqual ( req . valueBuffer , new Buffer ( 'test' , 'utf8' ) ) ) ;
67
+ t . end ( ) ;
68
+ } ) ;
69
+
70
+
71
+ test ( 'new with buffer args' , function ( t ) {
72
+ var req = new ExtendedRequest ( {
73
+ requestName : '1.2.3.4' ,
74
+ requestValue : new Buffer ( 'test' , 'utf8' )
75
+ } ) ;
76
+ t . ok ( req ) ;
77
+ t . equal ( req . requestName , '1.2.3.4' ) ;
78
+ t . equal ( req . requestValue , req . requestValueBuffer ) ;
79
+ t . ok ( areBuffersEqual ( req . requestValueBuffer , new Buffer ( 'test' , 'utf8' ) ) ) ;
80
+ t . equal ( req . value , req . valueBuffer ) ;
81
+ t . ok ( areBuffersEqual ( req . valueBuffer , new Buffer ( 'test' , 'utf8' ) ) ) ;
82
+ t . end ( ) ;
83
+ } ) ;
84
+
85
+
86
+ test ( 'new no args set args' , function ( t ) {
87
+ var req = new ExtendedRequest ( ) ;
88
+ t . ok ( req ) ;
89
+
90
+ req . name = '1.2.3.4' ;
91
+ t . equal ( req . requestName , '1.2.3.4' ) ;
92
+
93
+ req . value = 'test' ;
94
+ t . equal ( req . requestValue , 'test' ) ;
95
+ t . ok ( areBuffersEqual ( req . requestValueBuffer , new Buffer ( 'test' , 'utf8' ) ) ) ;
96
+ t . equal ( req . value , 'test' ) ;
97
+ t . ok ( areBuffersEqual ( req . valueBuffer , new Buffer ( 'test' , 'utf8' ) ) ) ;
98
+
99
+ t . end ( ) ;
100
+ } ) ;
101
+
102
+
103
+ test ( 'new no args set args buffer' , function ( t ) {
104
+ var req = new ExtendedRequest ( ) ;
105
+ t . ok ( req ) ;
106
+
107
+ req . name = '1.2.3.4' ;
108
+ t . equal ( req . requestName , '1.2.3.4' ) ;
109
+
110
+ req . value = new Buffer ( 'test' , 'utf8' ) ;
111
+ t . equal ( req . requestValue , req . requestValueBuffer ) ;
112
+ t . ok ( areBuffersEqual ( req . requestValueBuffer , new Buffer ( 'test' , 'utf8' ) ) ) ;
113
+ t . equal ( req . value , req . valueBuffer ) ;
114
+ t . ok ( areBuffersEqual ( req . valueBuffer , new Buffer ( 'test' , 'utf8' ) ) ) ;
115
+
40
116
t . end ( ) ;
41
117
} ) ;
42
118
@@ -51,6 +127,9 @@ test('parse', function (t) {
51
127
t . ok ( req . _parse ( new BerReader ( ber . buffer ) ) ) ;
52
128
t . equal ( req . requestName , '1.2.3.4' ) ;
53
129
t . equal ( req . requestValue , 'test' ) ;
130
+ t . ok ( areBuffersEqual ( req . requestValueBuffer , new Buffer ( 'test' , 'utf8' ) ) ) ;
131
+ t . equal ( req . value , 'test' ) ;
132
+ t . ok ( areBuffersEqual ( req . valueBuffer , new Buffer ( 'test' , 'utf8' ) ) ) ;
54
133
t . end ( ) ;
55
134
} ) ;
56
135
@@ -74,3 +153,24 @@ test('toBer', function (t) {
74
153
75
154
t . end ( ) ;
76
155
} ) ;
156
+
157
+
158
+ test ( 'toBer from buffer' , function ( t ) {
159
+ var req = new ExtendedRequest ( {
160
+ messageID : 123 ,
161
+ requestName : '1.2.3.4' ,
162
+ requestValue : new Buffer ( 'test' , 'utf8' )
163
+ } ) ;
164
+
165
+ t . ok ( req ) ;
166
+
167
+ var ber = new BerReader ( req . toBer ( ) ) ;
168
+ t . ok ( ber ) ;
169
+ t . equal ( ber . readSequence ( ) , 0x30 ) ;
170
+ t . equal ( ber . readInt ( ) , 123 ) ;
171
+ t . equal ( ber . readSequence ( ) , 0x77 ) ;
172
+ t . equal ( ber . readString ( 0x80 ) , '1.2.3.4' ) ;
173
+ t . equal ( ber . readString ( 0x81 ) , 'test' ) ;
174
+
175
+ t . end ( ) ;
176
+ } ) ;
0 commit comments