1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-09-30 15:30:50 +00:00
gnosygnu_xowa/400_xowa/tst/gplx/xowa/mediawiki/includes/XomwHooksTest.java
2020-05-03 09:19:19 -04:00

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
}
}