Files
yotocol/node_modules/@taptrack/ndef/test/testparser.js
2025-04-28 20:44:10 -05:00

119 lines
5.1 KiB
JavaScript

var Ndef = require('../src/ndef.js');
describe("Parser/composer self-test",function() {
it("Should create and parse a basic text record",function() {
var data = "TEST DATA";
var record = Ndef.Utils.createTextRecord(data,"en");
var message = new Ndef.Message([record]);
var rawBytes = message.toByteArray();
var parsedMessage = Ndef.Message.fromBytes(rawBytes);
var parsedRecords = parsedMessage.getRecords();
expect(parsedRecords.length).toEqual(1);
expect(Ndef.Utils.resolveTextRecord(parsedRecords[0]).content).toEqual(data);
});
it("Should create and parse a text record containing numbers",function() {
var data = "TEST2";
var record = Ndef.Utils.createTextRecord(data,"en");
var message = new Ndef.Message([record]);
var rawBytes = message.toByteArray();
var parsedMessage = Ndef.Message.fromBytes(rawBytes);
var parsedRecords = parsedMessage.getRecords();
expect(parsedRecords.length).toEqual(1);
expect(Ndef.Utils.resolveTextRecord(parsedRecords[0]).content).toEqual(data);
});
it("Should create and parse a unicode text record",function() {
var data = "寿司";
var record = Ndef.Utils.createTextRecord(data,"en");
var message = new Ndef.Message([record]);
var rawBytes = message.toByteArray();
var parsedMessage = Ndef.Message.fromBytes(rawBytes);
var parsedRecords = parsedMessage.getRecords();
expect(parsedRecords.length).toEqual(1);
expect(Ndef.Utils.resolveTextRecord(parsedRecords[0]).content).toEqual(data);
});
it("Should create and parse a basic url",function() {
var data = "https://www.test.com";
var record = Ndef.Utils.createUriRecord(data);
var message = new Ndef.Message([record]);
var rawBytes = message.toByteArray();
var parsedMessage = Ndef.Message.fromBytes(rawBytes);
var parsedRecords = parsedMessage.getRecords();
expect(parsedRecords.length).toEqual(1);
expect(Ndef.Utils.resolveUriRecordToString(parsedRecords[0])).toEqual(data);
});
it("Should create and parse a ndef record longer than 255 bytes",function() {
var data = "";
for(var i = 0; i < 400; i++) {
data += "a";
}
var record = Ndef.Utils.createTextRecord(data);
var message = new Ndef.Message([record]);
var rawBytes = message.toByteArray();
var parsedMessage = Ndef.Message.fromBytes(rawBytes);
var parsedRecords = parsedMessage.getRecords();
expect(parsedRecords.length).toEqual(1);
expect(Ndef.Utils.resolveTextRecord(parsedRecords[0]).content).toEqual(data);
});
it("Should create and parse a multi-record ndef message", function() {
var textdata1 = "TEXT1";
var record1 = Ndef.Utils.createTextRecord(textdata1,"en");
var uridata = "http://www.google.com";
var record2 = Ndef.Utils.createUriRecord(uridata);
var textdata2 = "TEXT2";
var record3 = Ndef.Utils.createTextRecord(textdata2,"en");
var message = new Ndef.Message([record1,record2,record3]);
var rawBytes = message.toByteArray();
var parsedMessage = Ndef.Message.fromBytes(rawBytes);
var parsedRecords = parsedMessage.getRecords();
expect(parsedRecords.length).toEqual(3);
expect(Ndef.Utils.resolveTextRecord(parsedRecords[0]).content).toEqual(textdata1);
expect(Ndef.Utils.resolveUriRecordToString(parsedRecords[1])).toEqual(uridata);
expect(Ndef.Utils.resolveTextRecord(parsedRecords[2]).content).toEqual(textdata2);
});
it("Should create and parse an NDEF message with an external record with arbitrary contents", function() {
uint8ArrayToHexString = function(data) {
var hexString = "";
for(var x = 0; x < data.length; x++) {
var hexValue = data[x].toString(16).toUpperCase();
if(data[x] <= 15) {
// gives zero padding to hex values less than 16
hexString = hexString.concat("0" + hexValue);
}
else {
hexString = hexString.concat(hexValue);
}
}
return hexString;
};
var tnf = Ndef.Record.TNF_EXTERNAL;
var type = Uint8Array.from([0x22,0x22,0x22]);
var id = Uint8Array.from([0x32,0x05,0x10,0x24]);
var payload = Uint8Array.from([0xBB,0xA0,0x45]);
var chunked = false;
var record = new Ndef.Record(chunked, tnf, type, id, payload);
var message = new Ndef.Message([record]);
var rawBytes = message.toByteArray();
var parsedMessage = Ndef.Message.fromBytes(rawBytes);
var parsedRecords = parsedMessage.getRecords();
expect(parsedRecords.length).toEqual(1);
expect(parsedRecords[0].getTnf()).toEqual(tnf);
expect(parsedRecords[0].getType()).toEqual(type);
expect(parsedRecords[0].getId()).toEqual(id);
expect(parsedRecords[0].getPayload()).toEqual(payload);
expect(parsedRecords[0].isChunked()).toEqual(chunked);
});
});