[Test] // []= [start, length]= [range]= public void TestIndexerSetter() { var fixnum1 = new Fixnum(1); var str = new String("string"); var nil = new NilClass(); var emptyArray = new Array(); emptyArray[0] = fixnum1; Assert.That(emptyArray[0], Is.EqualTo(fixnum1)); emptyArray = new Array(); emptyArray[1] = fixnum1; Assert.That(emptyArray[0], Is.EqualTo(nil)); Assert.That(emptyArray[1], Is.EqualTo(fixnum1)); emptyArray = new Array(); Assert.Throws <IndexError>(() => { emptyArray[-2] = fixnum1; }); var array = new Array(fixnum1, str); array[0] = str; array[1] = new NilClass(); Assert.That(array[0], Is.EqualTo(str)); Assert.That(array[1], Is.EqualTo(nil)); array[-1] = str; array[-2] = new NilClass(); Assert.That(array[-1], Is.EqualTo(str)); Assert.That(array[-2], Is.EqualTo(nil)); Assert.Throws <IndexError>(() => { emptyArray[-3] = fixnum1; }); }
[Test] // [] [start, length] [range] first last slice slice! public void TestIndexerGetter() { var fixnum0 = new Fixnum(0); var str = new String("string"); var nil = new NilClass(); var emptyArray = new Array(); Assert.That(emptyArray[0], Is.EqualTo(nil)); var array = new Array(fixnum0, str); // a = [0, "string"] // [] Assert.That(array[0], Is.EqualTo(fixnum0)); // a[0] => 0 Assert.That(array[1], Is.EqualTo(str)); // a[1] => "string" Assert.That(array[2], Is.EqualTo(nil)); // a[2] => nil Assert.That(array[-2], Is.EqualTo(fixnum0)); // a[-2] => 0 Assert.That(array[-1], Is.EqualTo(str)); // a[-1] => "string" Assert.That(array[-3], Is.EqualTo(nil)); // a[-3] => "string" // TODO // a[0, 3] => [0, "string"] // a[-2, 1] => [0] // a[0..5] => [0, "string"] // a[0...1] => [0] Assert.That(array.First, Is.EqualTo(fixnum0)); // a.first => 0 Assert.That(array.Last, Is.EqualTo(str)); // a.last => "string" // TODO // slice! }
public void TestFreeze() { var value = new NilClass(); Assert.IsTrue(value.Frozen); Assert.That(value.Freeze(), Is.EqualTo(value)); Assert.IsTrue(value.Frozen); }
public void TestIsA() { var instance = new NilClass(); Assert.IsTrue(instance.IsA(Class.NIL)); Assert.IsTrue(instance.IsA(Class.OBJECT)); Assert.IsTrue(instance.IsA(Class.BASIC_OBJECT)); Assert.IsFalse(instance.IsA(Class.STRING)); Assert.IsFalse(instance.IsA(Class.TRUE)); }
[Test] // compact compact! public void TestCompact() { var nil = new NilClass(); var fixnum0 = new Fixnum(0); var array = new Array(nil, nil); var newArray = array.Compact(); Assert.That(newArray.Count, Is.EqualTo(0)); Assert.That(array.Count, Is.EqualTo(2)); array.CompactSelf(); Assert.That(array.Count, Is.EqualTo(0)); }
[Test] // push public void TestPush() { var fixnum1 = new Fixnum(1); var str = new String("string"); var nil = new NilClass(); var emptyArray = new Array(); Assert.That(emptyArray.Push(fixnum1), Is.EqualTo(new Array(fixnum1))); var array = new Array(fixnum1, str, nil); Assert.That(array.Push(fixnum1), Is.EqualTo(new Array(fixnum1, str, nil, fixnum1))); }
[Test] // inspet public void TestInspect() { // [1, "string", nil].to_s = "[1, \"string\", nil]" var fixnum1 = new Fixnum(1); var str = new String("string"); var nil = new NilClass(); var emptyArray = new Array(); Assert.That(emptyArray.Inspect, Is.EqualTo("[]")); var array = new Array(fixnum1, str, nil); Assert.That(array.Inspect, Is.EqualTo("[1, \"string\", nil]")); }
public void TestIf() { var actual = Eval("if true then :a end"); iObject expected = new Symbol("a"); Assert.That(actual, Is.EqualTo(expected)); actual = Eval("if false then :a else 'b' end"); expected = new String("b"); Assert.That(actual, Is.EqualTo(expected)); actual = Eval("if true then :a else 'b' end"); expected = new Symbol("a"); Assert.That(actual, Is.EqualTo(expected)); actual = Eval("'a' if nil"); expected = new NilClass(); Assert.That(actual, Is.EqualTo(expected)); actual = Eval("'a' if :a"); expected = new String("a"); Assert.That(actual, Is.EqualTo(expected)); actual = Eval("if false then 1 elsif true then 2 else 3 end"); expected = new Fixnum(2); Assert.That(actual, Is.EqualTo(expected)); actual = Eval("unless false then 10 end"); expected = new Fixnum(10); Assert.That(actual, Is.EqualTo(expected)); actual = Eval("unless nil then 10 else 20 end"); expected = new Fixnum(10); Assert.That(actual, Is.EqualTo(expected)); actual = Eval("unless true then 10 else 20 end"); expected = new Fixnum(20); Assert.That(actual, Is.EqualTo(expected)); actual = Eval("10 unless nil"); expected = new Fixnum(10); Assert.That(actual, Is.EqualTo(expected)); }
public void Setup() { this.@class = new NilClass(null); }