public void Instance()
{
Interpret(@"load 'Bike.Test';
var person = Test.Person('bike', 0, 'kiki');
person.Name = 'John';
var name = person.Name;
person.Age = 10;
var age = person.Age;
var dogName = person.Pet.Name;")
.Equal("name", "John")
.Equal("age", 10)
.Equal("dogName", "kiki");
Interpret(@"func f() {
return person;
};
f().Pet.Name = 'lulu';
dogName = person.Pet.Name;")
.Equal("dogName", "lulu");
Interpret(@"f().Pet.Name = 'lulu-kiki';
dogName = f().Pet.Name;")
.Equal("dogName", "lulu-kiki");
Interpret(@"var arr = [{m: f}];
arr[0].m().Pet.Name = 'll';
dogName = arr[0].m().Pet.Name;")
.Equal("dogName", "ll");
Interpret(@"System.Console.Out.WriteLine('Hello Bike!');");
Interpret(@"var out = System.Console.Out;
out.WriteLine('Hello Bike, again!');");
Interpret(
@"var list = System.Collections.ArrayList();
for (var i in [1, 2, 3, 4])
list.Add('list item ' + i);
list.RemoveAt(1);
var i = 0;
while (i < list.Count)
System.Console.WriteLine(list[i++]);
for (var i in [1, 2, 3])
list[i-1] = list[i-1] + ' (updated)';
for (var obj in list)
System.Console.WriteLine(obj);
");
}