miyamuko #2179(2007/08/14 17:25 GMT) [ xtal ] Rating1/1=1.00
super クラスも検索するようにしてみました。 「bar: || "bar".p」というのは引数なしの lambda 関数を bar に束縛しているような感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
String::start_with: method(sub) { return this.split("").take(sub.length).to_a.join("") == sub; } TargetTest: class { test_foo: || "test_foo".p; test_bar: || "test_bar".p; foo: || "foo".p; bar: || "bar".p; } TargetTest2: class(TargetTest) { test_foo: || "test_foo_sub".p; test_baz: || "test_baz".p; } TestRunner: class { suite: method(target, inherited_too: true) fiber { klasses: [target]; if (inherited_too) { klasses ~= target.each_ancestor.to_a; } override: Map(); klasses {|klass| klass.each_member {|name, x, meth| if (! override[name] && name.start_with("test_")) { yield meth; } override[name] = true; } } } run: method(target) { suite(target) { it(); } } } runner: TestRunner(); "---".p; runner.run(TargetTest2); "---".p; runner.run(TargetTest);
Rating1/1=1.00-0+
[ reply ]
miyamuko
#2179()
[
xtal
]
Rating1/1=1.00
String::start_with: method(sub) { return this.split("").take(sub.length).to_a.join("") == sub; } TargetTest: class { test_foo: || "test_foo".p; test_bar: || "test_bar".p; foo: || "foo".p; bar: || "bar".p; } TargetTest2: class(TargetTest) { test_foo: || "test_foo_sub".p; test_baz: || "test_baz".p; } TestRunner: class { suite: method(target, inherited_too: true) fiber { klasses: [target]; if (inherited_too) { klasses ~= target.each_ancestor.to_a; } override: Map(); klasses {|klass| klass.each_member {|name, x, meth| if (! override[name] && name.start_with("test_")) { yield meth; } override[name] = true; } } } run: method(target) { suite(target) { it(); } } } runner: TestRunner(); "---".p; runner.run(TargetTest2); "---".p; runner.run(TargetTest);Rating1/1=1.00-0+
[ reply ]