mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-09-30 15:30:50 +00:00
81 lines
2.7 KiB
Java
81 lines
2.7 KiB
Java
|
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
|
||
|
}
|
||
|
}
|