From b786dc8b47bd8cdf3d884ea22923b30673341f2c Mon Sep 17 00:00:00 2001 From: Nicolas Vergez - PhyloFane Date: Thu, 13 Jul 2023 11:44:22 +0200 Subject: [PATCH] add enum valueof() unit test --- src/smartcontracts/typesystem/enum.spec.ts | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/smartcontracts/typesystem/enum.spec.ts b/src/smartcontracts/typesystem/enum.spec.ts index 23876e5c..4e98ab65 100644 --- a/src/smartcontracts/typesystem/enum.spec.ts +++ b/src/smartcontracts/typesystem/enum.spec.ts @@ -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", () => { @@ -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) + ] + }); + }); });