mirror of
https://github.com/apple/foundationdb.git
synced 2025-05-16 10:52:20 +08:00
102 lines
3.5 KiB
JavaScript
Executable File
102 lines
3.5 KiB
JavaScript
Executable File
/*
|
|
* tuple_test.js
|
|
*
|
|
* This source file is part of the FoundationDB open source project
|
|
*
|
|
* Copyright 2013-2018 Apple Inc. and the FoundationDB project authors
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
var fdb = require('../lib/fdb.js').apiVersion(500);
|
|
var fdbModule = require('../lib/fdbModule.js');
|
|
|
|
console.log(fdb.tuple.pack([-Math.pow(2,53)]));
|
|
console.log(fdb.tuple.pack([-Math.pow(2,53)+1]));
|
|
|
|
console.log(fdb.tuple.unpack(fdb.tuple.pack([-Math.pow(2,53)])));
|
|
console.log(fdb.tuple.unpack(fdb.tuple.pack([-Math.pow(2,53)+1])));
|
|
|
|
try {
|
|
console.log(fdb.tuple.unpack(fdb.buffer.fromByteLiteral('\x0d\xdf\xff\xff\xff\xff\xff\xfe')));
|
|
}
|
|
catch(err) {
|
|
console.log(err);
|
|
}
|
|
|
|
console.log(fdb.tuple.pack([0xff * 0xff]));
|
|
console.log(fdb.tuple.pack([0xffffffff + 100 ]));
|
|
console.log(fdb.buffer.printable(fdb.tuple.pack(['begin', [true, null, false], 'end'])))
|
|
console.log(fdb.tuple.unpack(fdb.buffer.fromByteLiteral('\x1a\xff\xff\xff\xff\xff\xff')));
|
|
console.log(fdb.tuple.unpack(fdb.tuple.pack(['TEST', 'herp', 1, -10, 393493, '\u0000abc', 0xffffffff + 100, true, false, [new Boolean(true), null, new Boolean(false), 0, 'asdf'], null])));
|
|
console.log(fdb.buffer.printable(fdb.tuple.pack([[[[['three']]], 'two'], 'one'])))
|
|
console.log(fdb.tuple.range(['TEST', 1]));
|
|
console.log(fdb.buffer.printable(fdb.tuple.pack([fdb.tuple.Float.fromBytes(new Buffer('402df854', 'hex')), fdb.tuple.Double.fromBytes(new Buffer('4005BF0A8B145769', 'hex')), new fdb.tuple.UUID(new Buffer('deadc0deba5eba115ca1ab1edeadc0de', 'hex'))])))
|
|
console.log(fdb.tuple.unpack(fdb.tuple.pack([fdb.tuple.Float.fromBytes(new Buffer('2734236f', 'hex'))])))
|
|
|
|
tuples = [
|
|
[1,2],
|
|
[1],
|
|
[2],
|
|
[true],
|
|
[false],
|
|
[1,true],
|
|
[1,false],
|
|
[1, []],
|
|
[1, [null]],
|
|
[1, [0]],
|
|
[1, [1]],
|
|
[1, [0,1,2]],
|
|
[null],
|
|
[]
|
|
];
|
|
tuples.sort(fdb.tuple.compare);
|
|
console.log(tuples);
|
|
|
|
tuples = [
|
|
[fdb.tuple.Float.fromBytes(new Buffer('2734236f', 'hex'))], // A really small value.
|
|
[fdb.tuple.Float.fromBytes(new Buffer('80000000', 'hex'))], // -0.0
|
|
[new fdb.tuple.Float(0.0)],
|
|
[new fdb.tuple.Float(3.14)],
|
|
[new fdb.tuple.Float(-3.14)],
|
|
[new fdb.tuple.Float(2.7182818)],
|
|
[new fdb.tuple.Float(-2.7182818)],
|
|
[fdb.tuple.Float.fromBytes(new Buffer('7f800000', 'hex'))], // Infinity
|
|
[fdb.tuple.Float.fromBytes(new Buffer('7fffffff', 'hex'))], // NaN
|
|
[fdb.tuple.Float.fromBytes(new Buffer('ffffffff', 'hex'))], // -NaN
|
|
];
|
|
tuples.sort(fdb.tuple.compare);
|
|
console.log(tuples);
|
|
|
|
// Float overruns.
|
|
const floats = [ 2.037036e90, -2.037036e90, 4.9090935e-91, -4.9090935e-91, 2.345624805922133125e14, -2.345624805922133125e14 ];
|
|
for (var i = 0; i < floats.length; i++) {
|
|
var f = floats[i];
|
|
console.log(f + " -> " + fdb.tuple.Float.fromBytes((new fdb.tuple.Float(f)).toBytes()).value);
|
|
}
|
|
|
|
// Float type errors.
|
|
try {
|
|
console.log((new fdb.tuple.Float("asdf")).toBytes());
|
|
} catch (e) {
|
|
console.log("Caught!");
|
|
console.log(e);
|
|
}
|
|
|
|
try {
|
|
console.log(fdbModule.toFloat(3.14, 2.718));
|
|
} catch (e) {
|
|
console.log("Caught!");
|
|
console.log(e);
|
|
}
|