MCPcopy Create free account
hub / github.com/chronoxor/FastBinaryEncoding / verifyDecimal

Function verifyDecimal

projects/JavaScript/tests/test_decimal.js:20–51  ·  view source on GitHub ↗
(low, mid, high, negative, scale)

Source from the content-addressed store, hash-verified

18}
19
20let verifyDecimal = function (low, mid, high, negative, scale) {
21 let flags = negative ? ((scale << 16) | 0x80000000) : (scale << 16)
22
23 let buffer = new Uint8Array(16)
24 writeUInt32(buffer, 0, low)
25 writeUInt32(buffer, 4, mid)
26 writeUInt32(buffer, 8, high)
27 writeUInt32(buffer, 12, flags)
28
29 let readBuffer = new fbe.ReadBuffer()
30 readBuffer.attachBuffer(buffer)
31
32 let model = new fbe.FieldModelDecimal(readBuffer, 0)
33 let value1 = model.get()
34 model.set(value1)
35 let value2 = model.get()
36
37 if (!value1.eq(value2)) {
38 throw new Error('Invalid decimal serialization!')
39 }
40
41 let finalModel = new fbe.FinalModelDecimal(readBuffer, 0)
42 let value3 = finalModel.get()
43 model.set(value3.value)
44 let value4 = finalModel.get()
45
46 if ((!value1.eq(value3.value)) || (!value2.eq(value4.value)) || (value3.size !== 16) || (value4.size !== 16)) {
47 throw new Error('Invalid decimal final serialization!')
48 }
49
50 return value1
51}
52
53test('Decimal tests', function (t) {
54 // FBE decimal exponent ranging from 0 to 28

Callers 2

test_decimal.jsFile · 0.85
decimalTestsMethod · 0.85

Calls 6

attachBufferMethod · 0.95
getMethod · 0.95
setMethod · 0.95
getMethod · 0.95
writeUInt32Function · 0.85
eqMethod · 0.45

Tested by 1

decimalTestsMethod · 0.68