mirror of
https://github.com/cerc-io/watcher-ts
synced 2025-07-27 10:42:06 +00:00
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:
parent
7c8f84b1dc
commit
e54f4c9276
@ -478,7 +478,23 @@ export const instantiate = async (
|
|||||||
|
|
||||||
return powResultBigDecimal;
|
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) => {
|
'bigInt.fromString': async (s: number) => {
|
||||||
const string = __getString(s);
|
const string = __getString(s);
|
||||||
|
|
||||||
|
@ -638,4 +638,22 @@ describe('numbers wasm tests', () => {
|
|||||||
expect(__getString(ptr)).to.equal(expected);
|
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);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
||||||
|
|
||||||
import { Address, log, BigInt, BigDecimal, ByteArray, dataSource, ethereum, Bytes, crypto, json, JSONValueKind } from '@graphprotocol/graph-ts';
|
import { Address, log, BigInt, BigDecimal, bigDecimal, ByteArray, dataSource, ethereum, Bytes, crypto, json, JSONValueKind } from '@graphprotocol/graph-ts';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Example1,
|
Example1,
|
||||||
@ -299,6 +299,15 @@ export function testBigDecimalTimes (value1: string, value2: string): string {
|
|||||||
return res.toString();
|
return res.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function testBigDecimalEquals (value1: string, value2: string): boolean {
|
||||||
|
log.debug('In test bigDecimal.equals', []);
|
||||||
|
|
||||||
|
const bigDecimal1 = bigDecimal.fromString(value1);
|
||||||
|
const bigDecimal2 = bigDecimal.fromString(value2);
|
||||||
|
|
||||||
|
return bigDecimal1.equals(bigDecimal2);
|
||||||
|
}
|
||||||
|
|
||||||
export function testBigIntPlus (value1: string, value2: string): string {
|
export function testBigIntPlus (value1: string, value2: string): string {
|
||||||
log.debug('In test bigInt.plus', []);
|
log.debug('In test bigInt.plus', []);
|
||||||
|
|
||||||
|
@ -151,6 +151,13 @@ export class GraphDecimal {
|
|||||||
return this.value.cmp(param);
|
return this.value.cmp(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
equals (n: Decimal.Value | GraphDecimal): boolean {
|
||||||
|
this._checkOutOfRange(this);
|
||||||
|
const param = this._checkOutOfRange(n);
|
||||||
|
|
||||||
|
return this.value.equals(param);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to check and throw an error if a given value has exponent out of the specified range (MIN_EXP to MAX_EXP).
|
* Function to check and throw an error if a given value has exponent out of the specified range (MIN_EXP to MAX_EXP).
|
||||||
* @param n A Decimal value to check the range for.
|
* @param n A Decimal value to check the range for.
|
||||||
|
Loading…
Reference in New Issue
Block a user