Change-Id: Id6bd22df69ce5e2c4676c51fd78311d4ff392ebfchanges/96/37396/1
parent
58bd2fc5b3
commit
f4da841034
@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
use strict;
|
||||||
|
use JE qw();
|
||||||
|
use Test::More;
|
||||||
|
|
||||||
|
my $je = JE->new();
|
||||||
|
my $je_result = $je->eval(<<EOJS
|
||||||
|
var f = function() {
|
||||||
|
var ud = 'john\@doe.com';
|
||||||
|
var i;
|
||||||
|
var checksum = 0;
|
||||||
|
var result = '';
|
||||||
|
var packed = [ 0, 0x45, 0x80, ud.length ];
|
||||||
|
for (i = 0; i < ud.length; i++) {
|
||||||
|
packed.push(ud.charCodeAt(i));
|
||||||
|
}
|
||||||
|
for (i = 0; i < packed.length; i++) {
|
||||||
|
checksum = checksum ^ packed[i];
|
||||||
|
}
|
||||||
|
packed.push(checksum);
|
||||||
|
for (i = 0; i < packed.length; i++) {
|
||||||
|
h = packed[i].toString(16);
|
||||||
|
if (h.length < 2) {
|
||||||
|
result = result + '0';
|
||||||
|
}
|
||||||
|
result = result + h;
|
||||||
|
}
|
||||||
|
return result.toUpperCase();
|
||||||
|
};
|
||||||
|
f();
|
||||||
|
EOJS
|
||||||
|
);
|
||||||
|
diag('js result: ' . $je_result);
|
||||||
|
|
||||||
|
my $ps = sub {
|
||||||
|
#my $ud = $subscriber{username} . '@' . $domain{domain};
|
||||||
|
my $ud = 'john@doe.com';
|
||||||
|
my $packed = pack('CCC C a*', 0, 0x45, 0x80, length($ud), $ud);
|
||||||
|
my $checksum = 0;
|
||||||
|
for my $c (map {ord $_} split(//, $packed)) {
|
||||||
|
$checksum ^= $c;
|
||||||
|
}
|
||||||
|
$packed .= pack('C', $checksum);
|
||||||
|
return uc(unpack('H*', $packed));
|
||||||
|
};
|
||||||
|
my $ps_result = $ps->();
|
||||||
|
diag('perl result: ' . $ps_result);
|
||||||
|
|
||||||
|
is($je_result, $ps_result, 'result is the same');
|
||||||
|
|
||||||
|
done_testing();
|
Loading…
Reference in new issue