Implement host API for big decimal equals (#476)

* Implement host api for big decimal equals

* Add test cases for big decimal equals

* Use boolean type conversion

---------

Co-authored-by: neeraj <neeraj.rtly@gmail.com>
This commit is contained in:
2023-11-17 10:26:03 +05:30
committed by GitHub
co-authored by neeraj
parent 7c8f84b1dc
commit e54f4c9276
4 changed files with 51 additions and 1 deletions
+16
View File
@@ -478,7 +478,23 @@ export const instantiate = async (
return powResultBigDecimal;
},
'bigDecimal.equals': async (x: number, y: number) => {
// Create decimal x string.
const xBigDecimal = await BigDecimal.wrap(x);
const xStringPtr = await xBigDecimal.toString();
const xDecimalString = __getString(xStringPtr);
const xDecimal = new GraphDecimal(xDecimalString);
// Create decimal y string.
const yBigDecimal = await BigDecimal.wrap(y);
const yStringPtr = await yBigDecimal.toString();
const yDecimalString = __getString(yStringPtr);
// Perform the decimal equal operation.
const isEqual = xDecimal.equals(yDecimalString);
return isEqual;
},
'bigInt.fromString': async (s: number) => {
const string = __getString(s);
+18
View File
@@ -638,4 +638,22 @@ describe('numbers wasm tests', () => {
expect(__getString(ptr)).to.equal(expected);
});
});
describe('should execute bigDecimal equals API', () => {
let testBigDecimalEquals: any, __newString: any;
before(() => {
({ testBigDecimalEquals, __newString } = exports);
});
it('should check given bigDecimals are equal', async () => {
const ptr = await testBigDecimalEquals(await __newString('231543212.2132354'), await __newString('231543212.2132354'));
expect(Boolean(ptr)).to.equal(true);
});
it('should check given bigDecimals are not equal', async () => {
const ptr = await testBigDecimalEquals(await __newString('231543212.2132354'), await __newString('54652.65645'));
expect(Boolean(ptr)).to.equal(false);
});
});
});