Skip to content

Commit

Permalink
add enum valueof() unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
Nicolas Vergez - PhyloFane committed Jul 13, 2023
1 parent a3305d4 commit b786dc8
Showing 1 changed file with 70 additions and 0 deletions.
70 changes: 70 additions & 0 deletions src/smartcontracts/typesystem/enum.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { U8Type, U8Value } from "./numerical";
import { Field, FieldDefinition } from "./fields";
import { EnumType, EnumValue, EnumVariantDefinition } from "./enum";
import { StringType, StringValue } from "./string";
import BigNumber from "bignumber.js";

describe("test enums", () => {
it("should get fields", () => {
Expand Down Expand Up @@ -41,5 +42,74 @@ describe("test enums", () => {
assert.throw(() => green.getFieldValue("3"), errors.ErrMissingFieldOnEnum);
assert.throw(() => orange.getFieldValue("1"), errors.ErrMissingFieldOnEnum);
});

it("should get valueOf()", () => {
// Define variants
let greenVariant = new EnumVariantDefinition("Green", 0, [
new FieldDefinition("0", "red component", new U8Type()),
new FieldDefinition("1", "green component", new U8Type()),
new FieldDefinition("2", "blue component", new U8Type()),
]);

let orangeVariant = new EnumVariantDefinition("Orange", 1, [
new FieldDefinition("0", "hex code", new StringType())
]);

let yellowVariant = new EnumVariantDefinition("Yellow", 2, [
new FieldDefinition("red", "red component", new U8Type()),
new FieldDefinition("green", "green component", new U8Type()),
new FieldDefinition("blue", "blue component", new U8Type()),
]);

// Define enum type
let enumType = new EnumType("Colour", [
greenVariant,
orangeVariant,
yellowVariant
]);

// Create enum values
let green = new EnumValue(enumType, greenVariant, [
new Field(new U8Value(0), "0"),
new Field(new U8Value(255), "1"),
new Field(new U8Value(0), "2")
]);

let orange = new EnumValue(enumType, orangeVariant, [
new Field(new StringValue("#FFA500"), "0")
]);

let yellow = new EnumValue(enumType, yellowVariant, [
new Field(new U8Value(255), "red"),
new Field(new U8Value(255), "green"),
new Field(new U8Value(0), "blue")
]);

// Test valueOf()
assert.deepEqual(green.valueOf(), {
"name": "Green",
"fields": [
new BigNumber(0),
new BigNumber(255),
new BigNumber(0)
]
});

assert.deepEqual(orange.valueOf(), {
"name": "Orange",
"fields": [
"#FFA500"
]
});

assert.deepEqual(yellow.valueOf(), {
"name": "Yellow",
"fields": [
new BigNumber(255),
new BigNumber(255),
new BigNumber(0)
]
});
});
});

0 comments on commit b786dc8

Please sign in to comment.