import * as assert from '../assert.js';
import { instantiate } from '../wabt-wrapper.js';

async function test() {
    const instance = await instantiate(`
        (module
          (func $test (param f64) (result f64)
            f64.const 1.0
            f64.const 2.0
        
            local.get 0
            i64.reinterpret_f64
            i32.wrap_i64
        
            i32.const 4096
            i32.lt_u
            select
        )
        (export "test" (func $test)))
    `);

    for (let i = 0; i < 1e4; ++i) {
        assert.eq(instance.exports.test(0.1111111111111111111111111111111111), 2.0);
        assert.eq(instance.exports.test(0), 1.0);
        assert.eq(instance.exports.test(1), 1.0);
        assert.eq(instance.exports.test(2), 1.0);
        assert.eq(instance.exports.test(3), 1.0);
        assert.eq(instance.exports.test(0.5), 1.0);
        assert.eq(instance.exports.test(-0.5), 1.0);
        assert.eq(instance.exports.test(200000), 1.0);
        assert.eq(instance.exports.test(-200000), 1.0);
    }
}

assert.asyncTest(test());
