mirror of https://github.com/gnosygnu/xowa
XOMW: Finish XomwHooks [#632]
parent
3d74406a3e
commit
d1345bf724
@ -0,0 +1,81 @@
|
||||
package gplx.xowa.mediawiki.includes;
|
||||
|
||||
import gplx.core.tests.Gftest;
|
||||
import gplx.xowa.mediawiki.XophpArray;
|
||||
import gplx.xowa.mediawiki.XophpArray__tst;
|
||||
import gplx.xowa.mediawiki.XophpCallback;
|
||||
import gplx.xowa.mediawiki.XophpCallbackOwner;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
public class XomwHooksTest {
|
||||
private XomwHooksTestCallbackOwner callbackOwner;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
callbackOwner = new XomwHooksTestCallbackOwner();
|
||||
XomwHooks.clearAll();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isRegistered() {
|
||||
Gftest.Eq__bool_n(XomwHooks.isRegistered("test1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void register() {
|
||||
Gftest.Eq__bool_n(XomwHooks.isRegistered("test1"));
|
||||
XomwHooks.register("test1", callbackOwner.NewCallback("test1"));
|
||||
Gftest.Eq__bool_y(XomwHooks.isRegistered("test1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void clear() {
|
||||
Gftest.Eq__bool_n(XomwHooks.isRegistered("test1"));
|
||||
XomwHooks.register("test1", callbackOwner.NewCallback("test1"));
|
||||
Gftest.Eq__bool_y(XomwHooks.isRegistered("test1"));
|
||||
XomwHooks.clear("test1");
|
||||
Gftest.Eq__bool_y(XomwHooks.isRegistered("test1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getHandlers() {
|
||||
XomwHooks.register("test1", callbackOwner.NewCallback("test1a"));
|
||||
XomwHooks.register("test1", callbackOwner.NewCallback("test1b"));
|
||||
XomwHooks.register("test2", callbackOwner.NewCallback("test2"));
|
||||
XophpArray handlers = XomwHooks.getHandlers("test1");
|
||||
Gftest.Eq__ary
|
||||
( new String[] {"test1a", "test1b"}
|
||||
, extractKeysFromCallbackAry(handlers)
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void run() {
|
||||
XomwHooks.register("test1", callbackOwner.NewCallback("test1a"));
|
||||
XomwHooks.register("test1", callbackOwner.NewCallback("test1b"));
|
||||
XomwHooks.register("test2", callbackOwner.NewCallback("test2"));
|
||||
|
||||
Gftest.Eq__bool_y(XomwHooks.run("test1", XophpArray.New(1, 2, 3)));
|
||||
|
||||
Gftest.Eq__str("test1a:3;test1b:3", callbackOwner.Result());
|
||||
}
|
||||
|
||||
private static String[] extractKeysFromCallbackAry(XophpArray callbacks) {
|
||||
int len = callbacks.Len();
|
||||
String[] rv = new String[len];
|
||||
for (int i = 0; i < len; i++) {
|
||||
XophpCallback callback = (XophpCallback)callbacks.Get_at(i);
|
||||
rv[i] = callback.MethodName();
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
class XomwHooksTestCallbackOwner implements XophpCallbackOwner {
|
||||
public String Result() {return result;} private String result = "";
|
||||
@Override
|
||||
public Object Call(String method, Object... args) {
|
||||
result += method + ":" + (args == null ? -1 : ((XophpArray)args[0]).count()) + ";";
|
||||
return null; // NOTE: XomwHooks throws error if non-null
|
||||
}
|
||||
}
|
Loading…
Reference in new issue