1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2025-06-13 12:54:14 +00:00
gnosygnu_xowa/400_xowa/tst/gplx/xowa/mediawiki/includes/XomwHooksTest.java

80 lines
2.7 KiB
Java
Raw Normal View History

package gplx.xowa.mediawiki.includes;
import gplx.frameworks.tests.GfoTstr;
import gplx.xowa.mediawiki.XophpArray;
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() {
GfoTstr.EqBoolN(XomwHooks.isRegistered("test1"));
}
@Test
public void register() {
GfoTstr.EqBoolN(XomwHooks.isRegistered("test1"));
XomwHooks.register("test1", callbackOwner.NewCallback("test1"));
GfoTstr.EqBoolY(XomwHooks.isRegistered("test1"));
}
@Test
public void clear() {
GfoTstr.EqBoolN(XomwHooks.isRegistered("test1"));
XomwHooks.register("test1", callbackOwner.NewCallback("test1"));
GfoTstr.EqBoolY(XomwHooks.isRegistered("test1"));
XomwHooks.clear("test1");
GfoTstr.EqBoolN(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");
GfoTstr.EqLines
( 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"));
GfoTstr.EqBoolY(XomwHooks.run("test1", XophpArray.New(1, 2, 3)));
GfoTstr.Eq("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]).Len()) + ";";
return null; // NOTE: XomwHooks throws error if non-null
}
2020-05-03 13:19:19 +00:00
}