I have a MyTester object that has an instance of another MyClass class, and I want to test the MyClass API through it:
public class MyTester { internal var myObj:MyClass; public function MyTester() { this.myObj = new MyClass(); trace(this.MyClassTestAPI("Foo", "arg1", arg2)); // tests function Foo(arg1:String, arg2:Number):String trace(this.MyClassTestAPI("MyProperty")); // tests function get MyProperty():String trace(this.MyClassTestAPI("MyProperty", "new value"));// tests function set MyProperty(val:String):void } public function MyClassTestAPI(functionName:String, ...rest):* { var value:*; try { if (typeof(this.mediaPlayer[functionName]) == 'function') { switch(rest.length) { case 0: value = myObj[functionName].call(functionName); break; case 1: value = myObj[functionName].call(functionName, rest[0]); break; case 2: value = myObj[functionName].call(functionName, rest[0],rest[1]); break; default: throw("Cannot pass more than 2 parameters (passed " + rest.length + ")"); } } else { switch(rest.length) { case 0: value = myObj[functionName]; break; case 1: myObj[functionName] = rest[0]; break; default: throw("Cannot pass parameter to getter or more than one parameter to setter (passed " + rest.length + ")"); } } } return value; } }
How can I undo a switch and make it work for any number of arguments? Thank you
source share