Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions assembly/test_decoder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,8 @@ export function decode(data: string): Value {
return res;
}

export function decodeRainCBOR_test(): bool {
export function decodeRainCBOR_test(rainSequenceEncoded: string): bool {
// Use: https://cbor.me/
const rainSequenceEncoded =
"A3004411223344011BFFC21BBF86CC199B02706170706C69636174696F6E2F63626F72A3004412345678011BFFE5FFB4A3FF2CDE02706170706C69636174696F6E2F6A736F6E";
const buff = stringToArrayBuffer(rainSequenceEncoded);
const decoder = new CBORDecoder(buff);
const res = decoder.parse();
Expand Down Expand Up @@ -465,3 +463,11 @@ export function decodeAllInArray(): boolean {
bytesResult
);
}

export function decodeRandomString(dataStr:string): string {
const buff = stringToArrayBuffer(dataStr);

const decoder = new CBORDecoder(buff);
const res = decoder.parse();
return res.toString();
}
7 changes: 3 additions & 4 deletions assembly/test_encoder.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { CBOREncoder } from "./encoder";

export function encodeRainDocument(): ArrayBuffer {
export function encodeRainDocument(dataStr:string): ArrayBuffer {
const encoder = new CBOREncoder();
encoder.addObject(3);

Expand All @@ -9,10 +9,9 @@ export function encodeRainDocument(): ArrayBuffer {

// h'11223344' = [28, 74, 54,020]
const arr: u8[] = [];
const bytes = "11223344";
let lengthBytes = 0;
for (let i = 0; i < bytes.length; i += 2) {
const byte = bytes.substr(i, 2);
for (let i = 0; i < dataStr.length; i += 2) {
const byte = dataStr.substr(i, 2);
const value = parseInt(byte, 16);
arr.push(u8(value));
lengthBytes += 1;
Expand Down
18 changes: 15 additions & 3 deletions tests/decoding.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ import {
decodeObject,
decodeArrayU8,
decodeArray,
decodeAllInArray,
decodeBytes,
decodeAllInObj,
decodeNestedObjs,
decodeRainCBOR_test,
decodeArrayInArray,
decode,
decode_assertError,
} from "../build/debug.js";

let result;
Expand Down Expand Up @@ -73,6 +73,18 @@ describe("Decoding", () => {
result = decodeObject()
assert.equal(result, true);
})
it("Test decode function", () => {
result = decode("0x010101")
assert.deepEqual(result, {});
})
it("Test decodeRainCBOR_test function", () => {
result = decodeRainCBOR_test("A3004411223344011BFFC21BBF86CC199B02706170706C69636174696F6E2F63626F72A3004412345678011BFFE5FFB4A3FF2CDE02706170706C69636174696F6E2F6A736F6E")
assert.deepEqual(result, true);
})
it("Test decode_assertError function when error", () => {
result = decode_assertError("0101")
assert.equal(result, false);
})
})

//
Expand Down
3 changes: 1 addition & 2 deletions tests/encoding.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,7 @@ let result;

describe("Encoding", () => {
it("Test encodeRainDocument function", () => {
result = encodeRainDocument();

result = encodeRainDocument("11223344");
assert.equal(
"a3004411223344011bffc21bbf86cc199b02706170706c69636174696f6e2f63626f72",
buf2hex(result)
Expand Down
59 changes: 44 additions & 15 deletions tests/rainCbor.test.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,53 @@
import { strict as assert } from "assert";
import {strict as assert} from "assert";
import {
decodeRainCBOR_test,
decode,
decode_assertError
decodeRainCBOR_test,
decode_assertError,
decodeRandomString,
decode
} from "../build/debug.js";

describe("Rain Cbor", () => {
it("Test rain cbor", () => {
it("Test rain cbor", () => {

const result = decodeRainCBOR_test();
assert.equal(result, true, "Failed when decoded a rain cbor sequence");
const result = decodeRainCBOR_test("A3004411223344011BFFC21BBF86CC199B02706170706C69636174696F6E2F63626F72A3004412345678011BFFE5FFB4A3FF2CDE02706170706C69636174696F6E2F6A736F6E");
assert.equal(result, true, "Failed when decoded a rain cbor sequence");

decode("A3004412345678011BFFE5FFB4A3FF2CDE026474657874");
decode("4f726465725f41");
decode("6F726465725F61");
});

const resultError = decode_assertError(
"ffe5ffb4a3ff2cdea50058d08d91c10e82300c86df65672e9ae8c177c083315e8c31454a32031dd93ae34278778b828006f1b6a6fffeff6b7bac94a6d2b3539be793d112e4fb50a2daa824303a152982a2293d15c820350fdbf5e92dd81ade81a658548745af436b8d557554292043a1305ed232c81d46e3f014ef980e5a231848538b6e80e3503ed83ea6133441335e5eeae56a3df0f2c9152fdc9b758a3fcc3eb634b3a3afe5dc90b88d99bac314ee798a778eeffc03100bcdf16b06e3b94592b663608c3d43a273cd419472cc12022439f67699a70b6b43e2f800011bffe5ffb4a3ff2cde02706170706c69636174696f6e2f6a736f6e03676465666c6174650462656e"
);
assert.equal(resultError, true);
it("Should return false for an invalid encoded rain sequence", () => {

});
const resultError = decode_assertError(
"ffe5ffb4a3ff2cdea50058d08d91c10e82300c86df65672e9ae8c177c083315e8c31454a32031dd93ae34278778b828006f1b6a6fffeff6b7bac94a6d2b3539be793d112e4fb50a2daa824303a152982a2293d15c820350fdbf5e92dd81ade81a658548745af436b8d557554292043a1305ed232c81d46e3f014ef980e5a231848538b6e80e3503ed83ea6133441335e5eeae56a3df0f2c9152fdc9b758a3fcc3eb634b3a3afe5dc90b88d99bac314ee798a778eeffc03100bcdf16b06e3b94592b663608c3d43a273cd419472cc12022439f67699a70b6b43e2f800011bffe5ffb4a3ff2cde02706170706c69636174696f6e2f6a736f6e03676465666c6174650462656e"
);
assert.equal(resultError, true);

});
it("Should returns error message for an invalid encoded rain sequence", () => {

const result = decodeRandomString(
"ffe5ffb4a3ff2cdea50058d08d91c10e82300c86df65672e9ae8c177c083315e8c31454a32031dd93ae34278778b828006f1b6a6fffeff6b7bac94a6d2b3539be793d112e4fb50a2daa824303a152982a2293d15c820350fdbf5e92dd81ade81a658548745af436b8d557554292043a1305ed232c81d46e3f014ef980e5a231848538b6e80e3503ed83ea6133441335e5eeae56a3df0f2c9152fdc9b758a3fcc3eb634b3a3afe5dc90b88d99bac314ee798a778eeffc03100bcdf16b06e3b94592b663608c3d43a273cd419472cc12022439f67699a70b6b43e2f800011bffe5ffb4a3ff2cde02706170706c69636174696f6e2f6a736f6e03676465666c6174650462656e"
);
assert.equal(result, 'DATA_BAD_FORMED');

});

it('should return false for an empty input string', () => {
const result = decodeRainCBOR_test("");
assert.equal(result, false);
});

it('should return false for a non-CBOR encoded string', () => {
const result = decodeRainCBOR_test('this is not CBOR encoded');
assert.equal(result, false);
});

it('should return "Data_Empty" if passed empty string', () => {
const result = decodeRandomString('');
assert.equal(result, 'DATA_EMPTY');
});

it('should check random string not cbor decoded', () => {
const result = decodeRandomString('Random not cbor-encoded string');
assert.equal(result, '[0,0,0,0,0,12,11,0,14,12,NO_VALUE_0,13,0,0,0]');
});
});