function shouldBe(actual, expected) {
    if (actual !== expected)
        throw new Error('bad value: ' + actual);
}

function testH(string) {
    return string.match(/H/);
}
noInline(testH);

function testHe(string) {
    return string.match(/He/);
}
noInline(testHe);

function testHel(string) {
    return string.match(/Hel/);
}
noInline(testHel);

function testHell(string) {
    return string.match(/Hell/);
}
noInline(testHell);

function testHello(string) {
    return string.match(/Hello/);
}
noInline(testHello);

function testHelloW(string) {
    return string.match(/HelloW/);
}
noInline(testHelloW);

function testHelloWo(string) {
    return string.match(/HelloWo/);
}
noInline(testHelloWo);

function testHelloWor(string) {
    return string.match(/HelloWor/);
}
noInline(testHelloWor);

function testHelloWorl(string) {
    return string.match(/HelloWorl/);
}
noInline(testHelloWorl);

function testHelloWorld(string) {
    return string.match(/HelloWorld/);
}
noInline(testHelloWorld);

for (var i = 0; i < 1e4; ++i) {
    shouldBe(testH("HelloWorld")[0], `H`);
    shouldBe(testHe("HelloWorld")[0], `He`);
    shouldBe(testHel("HelloWorld")[0], `Hel`);
    shouldBe(testHell("HelloWorld")[0], `Hell`);
    shouldBe(testHello("HelloWorld")[0], `Hello`);
    shouldBe(testHelloW("HelloWorld")[0], `HelloW`);
    shouldBe(testHelloWo("HelloWorld")[0], `HelloWo`);
    shouldBe(testHelloWor("HelloWorld")[0], `HelloWor`);
    shouldBe(testHelloWorl("HelloWorld")[0], `HelloWorl`);
    shouldBe(testHelloWorld("HelloWorld")[0], `HelloWorld`);
    shouldBe(testH("HelloWorldこんにちは")[0], `H`);
    shouldBe(testHe("HelloWorldこんにちは")[0], `He`);
    shouldBe(testHel("HelloWorldこんにちは")[0], `Hel`);
    shouldBe(testHell("HelloWorldこんにちは")[0], `Hell`);
    shouldBe(testHello("HelloWorldこんにちは")[0], `Hello`);
    shouldBe(testHelloW("HelloWorldこんにちは")[0], `HelloW`);
    shouldBe(testHelloWo("HelloWorldこんにちは")[0], `HelloWo`);
    shouldBe(testHelloWor("HelloWorldこんにちは")[0], `HelloWor`);
    shouldBe(testHelloWorl("HelloWorldこんにちは")[0], `HelloWorl`);
    shouldBe(testHelloWorld("HelloWorldこんにちは")[0], `HelloWorld`);
}
