function Add(a, b, c)
{
    Stdout("Test Add ", a, b, c);
    a = a + b;
    c = a + c;
    return a, c;
}

Stdout("Test Add-int ", Add(100, 200, 10.0));
Stdout("Test Add-float ", Add(100.0, 200.0, 10));
// 失败
#Stdout("Test Add-string ", Add(100.0, 200.0, "1000"));
Stdout("Test Add-string ", Add("100.0 + ", 200.0, "++++"));

function Sub(a, b, c)
{
    Stdout("Test Sub ", a, b, c);
    a = a - b;
    c = a - c;
    return a, c;
}

Stdout("Test Sub-int ", Sub(100, 200, 10.0));
Stdout("Test Sub-float ", Sub(100.0, 200.0, 10));

function Mul(a, b, c)
{
    Stdout("Test Mul ", a, b, c);
    a = a * b;
    c = a * c;
    return a, c;
}

Stdout("Test Mul-int ", Mul(100, 200, 10.0));
Stdout("Test Mul-float ", Mul(100.0, 200.0, 10));

function Div(a, b, c)
{
    Stdout("Test Div ", a, b, c);
    a = a / b;
    c = a / c;
    return a, c;
}

Stdout("Test Div-int ", Div(100, 200, 10.0));
Stdout("Test Div-float ", Div(100.0, 200.0, 10));

function EQ(a, b, c)
{
    Stdout("Test EQ ", a, b, c);
    d = a == b;
    e = a == c;
    return d, e;
}

Stdout("Test EQ-int ", EQ(100, 100, 10.0));
Stdout("Test EQ-float ", EQ(100.1, 200.1, 200));
Stdout("Test EQ-float ", EQ(100.1, 200, 200));
// string 只支持和str比较
#Stdout("Test EQ-string ", EQ("200.0", 200.0, 10));
Stdout("Test EQ-string ", EQ("200.0", "200.0", "10"));

function NE(a, b, c)
{
    Stdout("Test NE ", a, b, c);
    d = a != b;
    e = a != c;
    return d, e;
}

Stdout("Test NE-int ", NE(100, 100, 10.0));
Stdout("Test NE-float ", NE(100.1, 200.1, 200));
Stdout("Test NE-float ", NE(100.1, 200, 200));
// string 只支持和str比较
#Stdout("Test NE-string ", NE("200.0", 200.0, 10));
Stdout("Test NE-string ", NE("200.0", "200.0", "10"));

Stdout("Test NE-int ", NE(100, 100, 10.0));
Stdout("Test NE-float ", NE(100.1, 200.1, 200));
Stdout("Test NE-float ", NE(100.1, 200, 200));
// string 只支持和str比较
#Stdout("Test NE-string ", NE("200.0", 200.0, 10));
Stdout("Test NE-string ", NE("200.0", "200.0", "10"));

function GT(a, b, c)
{
    Stdout("Test GT ", a, b, c);
    d = a > b;
    e = a > c;
    return d, e;
}

Stdout("Test GT-int ", GT(100, 100, 10.0));
Stdout("Test GT-float ", GT(100.1, 200.1, 200));
Stdout("Test GT-float ", GT(100.1, 200, 200));
// string 只支持和str比较
#Stdout("Test GT-string ", GT("200.0", 200.0, 10));
Stdout("Test GT-string ", GT("200.0", "200.0", "10"));

function GE(a, b, c)
{
    Stdout("Test GE ", a, b, c);
    d = a >= b;
    e = a >= c;
    return d, e;
}

Stdout("Test GE-int ", GE(100, 100, 10.0));
Stdout("Test GE-float ", GE(100.1, 200.1, 200));
Stdout("Test GE-float ", GE(100.1, 200, 200));
// string 只支持和str比较
#Stdout("Test GE-string ", GE("200.0", 200.0, 10));
Stdout("Test GE-string ", GE("200.0", "200.0", "10"));

function LT(a, b, c)
{
    Stdout("Test LT ", a, b, c);
    d = a < b;
    e = a < c;
    return d, e;
}

Stdout("Test LT-int ", LT(100, 100, 10.0));
Stdout("Test LT-float ", LT(100.1, 200.1, 200));
Stdout("Test LT-float ", LT(100.1, 200, 200));
// string 只支持和str比较
#Stdout("Test LT-string ", LT("200.0", 200.0, 10));
Stdout("Test LT-string ", LT("200.0", "200.0", "10"));

function LE(a, b, c)
{
    Stdout("Test LE ", a, b, c);
    d = a <= b;
    e = a <= c;
    return d, e;
}

Stdout("Test LE-int ", LE(100, 100, 10.0));
Stdout("Test LE-float ", LE(100.1, 200.1, 200));
Stdout("Test LE-float ", LE(100.1, 200, 200));
// string 只支持和str比较
#Stdout("Test LE-string ", LE("200.0", 200.0, 10));
Stdout("Test LE-string ", LE("200.0", "200.0", "10"));

// 测试if语句
function TestIf(a, b, c)
{
    if (a > b) {
        return a, c;
    } else {
        return b, c;
    }
}

Stdout("TestIf ", TestIf(100, 10, 10.0));
Stdout("TestIf ", TestIf(200, 100, 10.0));
Stdout("TestIf ", TestIf(100, 10 + 200, 10.0));

// 测试for
function TestFor(a, b, c)
{
    for (i = 0; i < a; i = i + 1) {
        Stdout("TestFor i = ", i);
        if (i > b) {
            Stdout("TestFor return");
            return i;
        }
        if (i == b) {
            Stdout("TestFor continue");
            continue;
        }
        if (i == c) {
            Stdout("TestFor break");
            break;
        }
    }
    return c;
}

Stdout("TestFor ", TestFor(10, 5, 10));
Stdout("TestFor ", TestFor(10, 5, 10));
Stdout("TestFor ", TestFor(10, 5, 3));

// 测试while 循环
function TestWhile(a, b, c)
{
    i = 0;
    while (i < a) {
        Stdout("TestWhile i = ", i);
        if (i > b) {
            Stdout("TestWhile return");
            return i;
        }
        if (i == b) {
            Stdout("TestWhile continue i= ", i);
            i = i + 2;
            continue;
        }
        if (i == c) {
            Stdout("TestWhile break");
            break;
        }
        i = i + 1;
    }
    return c;
}

Stdout("TestWhile ", TestWhile(10, 5, 10));
Stdout("TestWhile ", TestWhile(10, 5, 10));
Stdout("TestWhile ", TestWhile(10, 5, 3));