Better testing
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
'use strict';
|
||||
|
||||
var assert = require('assert'),
|
||||
encodings = require('../defs').encodings;
|
||||
|
||||
describe('encodings', function() {
|
||||
describe('ASCII', function() {
|
||||
var ASCII = encodings.ASCII,
|
||||
samples;
|
||||
|
||||
samples = {
|
||||
'@£$¥': [0, 1, 2, 3],
|
||||
' 1a=': [0x20, 0x31, 0x61, 0x3D],
|
||||
'~^€': [0x1B, 0x3D, 0x1B, 0x14, 0x1B, 0x65]
|
||||
};
|
||||
|
||||
describe('#match()', function() {
|
||||
it('should return true for strings that can be encoded using GSM 03.38 ASCII charset', function() {
|
||||
assert(ASCII.match(''));
|
||||
assert(ASCII.match('@£$¥èéùìòÇ\nØø\rÅåΔ_ΦΓΛΩΠΨΣΘΞ\x1BÆæßÉ !"#¤%&\''));
|
||||
assert(ASCII.match('()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZ'));
|
||||
assert(ASCII.match('ÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà'));
|
||||
assert(ASCII.match('\f^{}\\[~]|€'));
|
||||
});
|
||||
|
||||
it('should return false for strings that can not be encoded using GSM 03.38 ASCII charset', function() {
|
||||
assert( ! ASCII.match('`'));
|
||||
assert( ! ASCII.match('ÁáçÚUÓO'));
|
||||
assert( ! ASCII.match('تست'));
|
||||
});
|
||||
});
|
||||
|
||||
describe('#encode', function() {
|
||||
it('should properly encode the given string using GSM 03.38 ASCII charset', function() {
|
||||
var str;
|
||||
|
||||
for (str in samples) {
|
||||
assert.deepEqual(ASCII.encode(str), new Buffer(samples[str]));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe('#decode', function() {
|
||||
it('should properly decode the given buffer using GSM 03.38 ASCII charset', function() {
|
||||
var str;
|
||||
|
||||
for (str in samples) {
|
||||
assert.deepEqual(ASCII.decode(samples[str]), str);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('LATIN1', function() {
|
||||
var LATIN1 = encodings.LATIN1,
|
||||
samples;
|
||||
|
||||
samples = {
|
||||
'@$`Á': [0x40, 0x24, 0x60, 0xC1],
|
||||
'áçÚ': [0xE1, 0xE7, 0xDA],
|
||||
'UÓO': [0x55, 0xD3, 0x4F]
|
||||
};
|
||||
|
||||
describe('#match()', function() {
|
||||
it('should return false for strings that can be encoded using LATIN1 charset', function() {
|
||||
assert( ! LATIN1.match('`ÁáçÚUÓO'));
|
||||
});
|
||||
|
||||
it('should return false for strings that can not be encoded using LATIN1 charset', function() {
|
||||
assert( ! LATIN1.match('تست'));
|
||||
assert( ! LATIN1.match('۱۲۳۴۵۶۷۸۹۰'));
|
||||
assert( ! LATIN1.match('ʹʺʻʼʽ`'));
|
||||
});
|
||||
});
|
||||
|
||||
describe('#encode', function() {
|
||||
it('should properly encode the given string using LATIN1 charset', function() {
|
||||
var str;
|
||||
|
||||
for (str in samples) {
|
||||
assert.deepEqual(LATIN1.encode(str), new Buffer(samples[str]));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe('#decode', function() {
|
||||
it('should properly decode the given buffer using LATIN1 charset', function() {
|
||||
var str;
|
||||
|
||||
for (str in samples) {
|
||||
assert.deepEqual(LATIN1.decode(samples[str]), str);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('UCS2', function() {
|
||||
var UCS2 = encodings.UCS2,
|
||||
samples;
|
||||
|
||||
samples = {
|
||||
' 1a': [0x00, 0x20, 0x00, 0x31, 0x00, 0x61],
|
||||
'۱۲۳': [0x06, 0xF1, 0x06, 0xF2, 0x06, 0xF3]
|
||||
};
|
||||
|
||||
describe('#match()', function() {
|
||||
it('should always return true', function() {
|
||||
assert(UCS2.match(''));
|
||||
assert(UCS2.match('`ÁáçÚUÓO'));
|
||||
assert(UCS2.match('تست'));
|
||||
assert(UCS2.match('۱۲۳۴۵۶۷۸۹۰'));
|
||||
assert(UCS2.match('ʹʺʻʼʽ`'));
|
||||
});
|
||||
});
|
||||
|
||||
describe('#encode', function() {
|
||||
it('should properly encode the given string using UCS2 charset', function() {
|
||||
var str;
|
||||
|
||||
for (str in samples) {
|
||||
assert.deepEqual(UCS2.encode(str), new Buffer(samples[str]));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe('#decode', function() {
|
||||
it('should properly decode the given buffer using UCS2 charset', function() {
|
||||
var str;
|
||||
|
||||
for (str in samples) {
|
||||
assert.deepEqual(UCS2.decode(samples[str]), str);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('#detect()', function() {
|
||||
it('should return proper encoding for the given string', function() {
|
||||
assert.equal(encodings.detect(''), 'ASCII');
|
||||
assert.equal(encodings.detect('ÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà(){}[]'), 'ASCII');
|
||||
assert.equal(encodings.detect('`ÁáçÚUÓO'), 'UCS2');
|
||||
assert.equal(encodings.detect('«©®µ¶±»'), 'UCS2');
|
||||
assert.equal(encodings.detect('ʹʺʻʼʽ`'), 'UCS2');
|
||||
assert.equal(encodings.detect('تست'), 'UCS2');
|
||||
assert.equal(encodings.detect('۱۲۳۴۵۶۷۸۹۰'), 'UCS2');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user