mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
Wikibase: Fix script error 'libraryUtil.lua:13 bad argument #1 to message.newRawMessage' on sever dozen military pages
This commit is contained in:
@@ -0,0 +1,204 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.specials.allPages; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*;
|
||||
import org.junit.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.wikis.tdbs.hives.*;
|
||||
public class Xows_page_allpages_tst {
|
||||
@Before public void init() {fxt.Clear();} private Xows_page_allpages_fxt fxt = new Xows_page_allpages_fxt();
|
||||
@Test public void Build_data() {
|
||||
Xow_hive_mgr_fxt.Ttls_create_rng(fxt.Wiki(), 5, 7);
|
||||
fxt.Clear().Init_ttl_leaf("/B1").Expd_prv("A3").Expd_nxt("B6").Expd_ttls("B1", "B2", "B3", "B4", "B5").Test_build_data(); // SpecialPage:AllPages/B1
|
||||
fxt.Clear().Init_arg("from", "B1").Expd_prv("A3").Expd_nxt("B6").Expd_ttls("B1", "B2", "B3", "B4", "B5").Test_build_data(); // single file
|
||||
fxt.Clear().Init_arg("from", "A6").Expd_prv("A1").Expd_nxt("B4").Expd_ttls("A6", "B0", "B1", "B2", "B3").Test_build_data(); // overflow rhs
|
||||
fxt.Clear().Init_arg("from", "E4").Expd_prv("D6").Expd_nxt("E6").Expd_ttls("E4", "E5", "E6", null, null).Test_build_data(); // bounds rhs
|
||||
fxt.Clear().Init_arg("from", "A0").Expd_prv("A0").Expd_nxt("A5").Expd_ttls("A0", "A1", "A2", "A3", "A4").Test_build_data(); // bounds lhs
|
||||
fxt.Clear().Init_arg("from", "B0a").Expd_prv("A3").Expd_nxt("B6").Expd_ttls("B1", "B2", "B3", "B4", "B5").Test_build_data(); // inexact match; B0a matches "hi" value
|
||||
fxt.Clear().Init_arg("from", "B1").Init_arg("hideredirects", "1").Expd_prv("A0").Expd_nxt("C4").Expd_ttls("B2", "B4", "B6", "C0", "C2").Test_build_data(); // hide redirects
|
||||
fxt.Clear().Init_arg("from", "A6").Expd_prv("A0").Expd_nxt("E1").Init_itms_per_page(23).Expd_ttls("A6", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "E0").Test_build_data(); // overflow rhs x2
|
||||
}
|
||||
@Test public void Build_html_main() {
|
||||
Xow_hive_mgr_fxt.Ttls_create_rng(fxt.Wiki(), 5, 7);
|
||||
fxt.Clear().Init_arg("from", "B2").Init_itms_per_page(5).Test_build_html(String_.Concat_lines_nl
|
||||
( "<table class=\"mw-allpages-table-form\">"
|
||||
, " <tr>"
|
||||
, " <td class=\"mw-allpages-nav\">"
|
||||
, "<a href=\"/wiki/Special:AllPages?from=A4\" title=\"Special:AllPages\">Previous page (A4)</a> |"
|
||||
, "<a href=\"/wiki/Special:AllPages?from=C0\" title=\"Special:AllPages\">Next page (C0)</a>"
|
||||
, " </td>"
|
||||
, " </tr>"
|
||||
, "</table>"
|
||||
, "<table class=\"mw-allpages-table-chunk\">"
|
||||
, "<tbody>"
|
||||
, " <tr>"
|
||||
, " <td style=\"width:33%\"><a href=\"/wiki/B2\" title=\"B2\">B2</a></td>"
|
||||
, " <td style=\"width:33%\"><div class=\"allpagesredirect\"><a href=\"/wiki/B3\" class=\"mw-redirect\" title=\"B3\">B3</a></div></td>"
|
||||
, " <td style=\"width:33%\"><a href=\"/wiki/B4\" title=\"B4\">B4</a></td>"
|
||||
, " </tr>"
|
||||
, " <tr>"
|
||||
, " <td style=\"width:33%\"><div class=\"allpagesredirect\"><a href=\"/wiki/B5\" class=\"mw-redirect\" title=\"B5\">B5</a></div></td>"
|
||||
, " <td style=\"width:33%\"><a href=\"/wiki/B6\" title=\"B6\">B6</a></td>"
|
||||
, " </tr>"
|
||||
, "</tbody>"
|
||||
, "</table>"
|
||||
, "<hr/>"
|
||||
, "<div class=\"mw-allpages-nav\">"
|
||||
, "<a href=\"/wiki/Special:AllPages?from=A4\" title=\"Special:AllPages\">Previous page (A4)</a> |"
|
||||
, "<a href=\"/wiki/Special:AllPages?from=C0\" title=\"Special:AllPages\">Next page (C0)</a>"
|
||||
, "</div>"
|
||||
));
|
||||
}
|
||||
@Test public void Build_html_redirect() {
|
||||
Xow_hive_mgr_fxt.Ttls_create_rng(fxt.Wiki(), 1, 7);
|
||||
fxt.Clear().Init_arg("from", "A2").Init_arg("hideredirects", "1").Init_itms_per_page(2).Test_build_html(String_.Concat_lines_nl
|
||||
( "<table class=\"mw-allpages-table-form\">"
|
||||
, " <tr>"
|
||||
, " <td class=\"mw-allpages-nav\">"
|
||||
, "<a href=\"/wiki/Special:AllPages?from=A0&hideredirects=1\" title=\"Special:AllPages\">Previous page (A0)</a> |"
|
||||
, "<a href=\"/wiki/Special:AllPages?from=A6&hideredirects=1\" title=\"Special:AllPages\">Next page (A6)</a>"
|
||||
, " </td>"
|
||||
, " </tr>"
|
||||
, "</table>"
|
||||
, "<table class=\"mw-allpages-table-chunk\">"
|
||||
, "<tbody>"
|
||||
, " <tr>"
|
||||
, " <td style=\"width:33%\"><a href=\"/wiki/A2\" title=\"A2\">A2</a></td>"
|
||||
, " <td style=\"width:33%\"><a href=\"/wiki/A4\" title=\"A4\">A4</a></td>"
|
||||
, " </tr>"
|
||||
, "</tbody>"
|
||||
, "</table>"
|
||||
, "<hr/>"
|
||||
, "<div class=\"mw-allpages-nav\">"
|
||||
, "<a href=\"/wiki/Special:AllPages?from=A0&hideredirects=1\" title=\"Special:AllPages\">Previous page (A0)</a> |"
|
||||
, "<a href=\"/wiki/Special:AllPages?from=A6&hideredirects=1\" title=\"Special:AllPages\">Next page (A6)</a>"
|
||||
, "</div>"
|
||||
));
|
||||
}
|
||||
@Test public void Build_html_ns() {
|
||||
Xow_hive_mgr_fxt.Ttls_create_rng(fxt.Wiki(), fxt.Wiki().Ns_mgr().Ns_template(), 1, 7);
|
||||
fxt.Clear().Init_arg("from", "A2").Init_arg("namespace", "10").Init_itms_per_page(2).Test_build_html(String_.Concat_lines_nl
|
||||
( "<table class=\"mw-allpages-table-form\">"
|
||||
, " <tr>"
|
||||
, " <td class=\"mw-allpages-nav\">"
|
||||
, "<a href=\"/wiki/Special:AllPages?from=A0&namespace=10\" title=\"Special:AllPages\">Previous page (Template:A0)</a> |"
|
||||
, "<a href=\"/wiki/Special:AllPages?from=A4&namespace=10\" title=\"Special:AllPages\">Next page (Template:A4)</a>"
|
||||
, " </td>"
|
||||
, " </tr>"
|
||||
, "</table>"
|
||||
, "<table class=\"mw-allpages-table-chunk\">"
|
||||
, "<tbody>"
|
||||
, " <tr>"
|
||||
, " <td style=\"width:33%\"><a href=\"/wiki/Template:A2\" title=\"Template:A2\">Template:A2</a></td>"
|
||||
, " <td style=\"width:33%\"><div class=\"allpagesredirect\"><a href=\"/wiki/Template:A3\" class=\"mw-redirect\" title=\"Template:A3\">Template:A3</a></div></td>"
|
||||
, " </tr>"
|
||||
, "</tbody>"
|
||||
, "</table>"
|
||||
, "<hr/>"
|
||||
, "<div class=\"mw-allpages-nav\">"
|
||||
, "<a href=\"/wiki/Special:AllPages?from=A0&namespace=10\" title=\"Special:AllPages\">Previous page (Template:A0)</a> |"
|
||||
, "<a href=\"/wiki/Special:AllPages?from=A4&namespace=10\" title=\"Special:AllPages\">Next page (Template:A4)</a>"
|
||||
, "</div>"
|
||||
));
|
||||
}
|
||||
@Test public void Misc() {
|
||||
Xow_hive_mgr_fxt.Ttls_create_rng(fxt.Wiki(), fxt.Wiki().Ns_mgr().Ns_template(), 1, 7);
|
||||
fxt.Clear().Init_arg("from", "Template:B1").Expd_arg("from", "B1").Expd_arg("namespace", "10").Test_build_data(); // extract ns from ttl
|
||||
fxt.Clear().Init_arg("from", "Template:B1").Expd_display_ttl("All pages").Expd_address_page("Special:AllPages").Test_special_gen(); // display ttl
|
||||
}
|
||||
}
|
||||
class Xows_page_allpages_fxt {
|
||||
public Xows_page_allpages_fxt Clear() {
|
||||
if (app == null) {
|
||||
app = Xoa_app_fxt.Make__app__edit();
|
||||
wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
allpages = wiki.Special_mgr().Page_allpages();
|
||||
Gfo_invk_.Invk_by_val(allpages, Xows_page_allpages.Invk_itms_per_page_, 5);
|
||||
}
|
||||
init_ttl_leaf = "";
|
||||
expd_prv = expd_nxt = null;
|
||||
expd_ttls = null;
|
||||
expd_display_ttl = null;
|
||||
return this;
|
||||
} private Xoae_app app;
|
||||
public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; Xows_page_allpages allpages;
|
||||
public Xows_page_allpages_fxt Init_arg(String key, String val) {init_args.Add(new Gfo_qarg_itm(Bry_.new_a7(key), Bry_.new_a7(val))); return this;} private List_adp init_args = List_adp_.New();
|
||||
public Xows_page_allpages_fxt Init_ttl_leaf(String val) {init_ttl_leaf = val; return this;} private String init_ttl_leaf;
|
||||
public Xows_page_allpages_fxt Init_itms_per_page(int v) {init_itms_per_page = v; return this;} private int init_itms_per_page = 5;
|
||||
public Xows_page_allpages_fxt Expd_arg(String key, String val) {expd_args.Add(new Gfo_qarg_itm(Bry_.new_a7(key), Bry_.new_a7(val))); return this;} private List_adp expd_args = List_adp_.New();
|
||||
public Xows_page_allpages_fxt Expd_prv(String v) {expd_prv = v; return this;} private String expd_prv;
|
||||
public Xows_page_allpages_fxt Expd_nxt(String v) {expd_nxt = v; return this;} private String expd_nxt;
|
||||
public Xows_page_allpages_fxt Expd_ttls(String... v) {expd_ttls = v; return this;} private String[] expd_ttls;
|
||||
public Xows_page_allpages_fxt Expd_display_ttl(String v) {expd_display_ttl = v; return this;} private String expd_display_ttl;
|
||||
public Xows_page_allpages_fxt Expd_address_page(String v) {expd_address_page = v; return this;} private String expd_address_page;
|
||||
|
||||
public static String Xto_str(Xowe_wiki wiki, Xowd_page_itm v) {
|
||||
if (v == null) return null;
|
||||
Xow_ns ns = wiki.Ns_mgr().Ids_get_or_null(v.Ns_id());
|
||||
String ns_str = ns == null ? "" : String_.new_a7(ns.Name_db_w_colon());
|
||||
return ns_str + String_.new_a7(v.Ttl_page_db());
|
||||
}
|
||||
public static String[] Xto_str_ary(Xowe_wiki wiki, Xowd_page_itm[] ary) {
|
||||
int ary_len = ary.length;
|
||||
String[] rv = new String[ary_len];
|
||||
for (int i = 0; i < ary_len; i++) {
|
||||
Xowd_page_itm itm = ary[i];
|
||||
rv[i] = Xto_str(wiki, itm);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
public static String[] Xto_str_ary(Gfo_qarg_itm[] ary) {
|
||||
int ary_len = ary.length;
|
||||
String[] rv = new String[ary_len];
|
||||
for (int i = 0; i < ary_len; i++) {
|
||||
Gfo_qarg_itm itm = ary[i];
|
||||
rv[i] = String_.new_u8(itm.Key_bry()) + "=" + String_.new_u8(itm.Val_bry());
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
public Xows_page_allpages_fxt Test_special_gen() {
|
||||
init_url = app.User().Wikii().Utl__url_parser().Parse(Xow_special_meta_.Itm__all_pages.Ttl_bry());
|
||||
Xoa_ttl init_ttl = Make_init_ttl();
|
||||
allpages.Special__gen(wiki, wiki.Parser_mgr().Ctx().Page(), init_url, init_ttl);
|
||||
if (expd_display_ttl != null) Tfds.Eq(expd_display_ttl, String_.new_u8(wiki.Parser_mgr().Ctx().Page().Html_data().Display_ttl()));
|
||||
if (expd_address_page != null) Tfds.Eq(expd_address_page, String_.new_u8(init_url.Page_bry()));
|
||||
return this;
|
||||
}
|
||||
public Xows_page_allpages_fxt Test_build_data() {
|
||||
Exec_build();
|
||||
if (expd_ttls != null) Tfds.Eq_ary_str(expd_ttls, Xto_str_ary(wiki, allpages.Rslt_list_ttls()));
|
||||
if (expd_nxt != null) Tfds.Eq(expd_nxt, Xto_str(wiki, allpages.Rslt_nxt()));
|
||||
if (expd_prv != null) Tfds.Eq(expd_prv, Xto_str(wiki, allpages.Rslt_prv()));
|
||||
if (expd_args.Count() > 0) {
|
||||
Gfo_qarg_itm[] expd_args_ary = (Gfo_qarg_itm[])expd_args.To_ary(Gfo_qarg_itm.class);
|
||||
Tfds.Eq_ary_str(Xto_str_ary(expd_args_ary), Xto_str_ary(init_url.Qargs_ary()));
|
||||
}
|
||||
return this;
|
||||
} private Xoa_url init_url = Xoa_url.blank();
|
||||
public Xows_page_allpages_fxt Test_build_html(String expd) {
|
||||
Exec_build();
|
||||
allpages.Build_html(wiki.Parser_mgr().Ctx().Page());
|
||||
Tfds.Eq_str_lines(expd, String_.new_a7(wiki.Parser_mgr().Ctx().Page().Db().Text().Text_bry()));
|
||||
return this;
|
||||
}
|
||||
private void Exec_build() {
|
||||
if (allpages.Itms_per_page() != init_itms_per_page) allpages.Itms_per_page_(init_itms_per_page);
|
||||
init_url.Qargs_ary_((Gfo_qarg_itm[])init_args.To_ary(Gfo_qarg_itm.class));
|
||||
init_args.Clear();
|
||||
Xoa_ttl init_ttl = Make_init_ttl();
|
||||
allpages.Build_data(init_url, init_ttl);
|
||||
}
|
||||
private Xoa_ttl Make_init_ttl() {return Xoa_ttl.Parse(wiki, Bry_.new_u8(Xow_special_meta_.Itm__all_pages.Ttl_str() + init_ttl_leaf));}
|
||||
}
|
||||
75
400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr_tst.java
Normal file
75
400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr_tst.java
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.specials.nearby; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*;
|
||||
import org.junit.*;
|
||||
public class Nearby_mgr_tst {
|
||||
@Before public void init() {fxt.Clear();} Nearby_mgr_fxt fxt = new Nearby_mgr_fxt();
|
||||
@Test public void Basic() {
|
||||
fxt.Init_page("A", "[[B]]");
|
||||
fxt.Test_find("A", "B", "A|B");
|
||||
}
|
||||
@Test public void Shortest() {
|
||||
fxt.Init_page("A", "[[B]]");
|
||||
fxt.Init_page("B", "[[C]] [[D]]");
|
||||
fxt.Init_page("C", "[[D]]");
|
||||
fxt.Test_find("A", "D", "A|B|D");
|
||||
fxt.Init_results_max(2).Test_find("A", "D", "A|B|D", "A|B|C|D");
|
||||
}
|
||||
@Test public void Circular() {
|
||||
fxt.Init_page("A", "[[B]]");
|
||||
fxt.Init_page("B", "[[C]]");
|
||||
fxt.Init_page("C", "[[A]]");
|
||||
fxt.Test_find("A", "D", "");
|
||||
}
|
||||
@Test public void Page_doesnt_exist() {
|
||||
fxt.Init_page("A", "[[B]]");
|
||||
fxt.Test_find("A", "C", "");
|
||||
}
|
||||
}
|
||||
class Nearby_mgr_fxt {
|
||||
public Nearby_mgr_fxt Clear() {
|
||||
if (fxt == null) {
|
||||
fxt = new Xop_fxt();
|
||||
nearby_mgr = new Nearby_mgr();
|
||||
excluded = Hash_adp_bry.ci_a7();
|
||||
tmp_bfr = Bry_bfr_.New();
|
||||
}
|
||||
fxt.Reset();
|
||||
Io_mgr.Instance.InitEngine_mem();
|
||||
nearby_mgr.Results_max_(1);
|
||||
return this;
|
||||
} private Xop_fxt fxt; Nearby_mgr nearby_mgr; Hash_adp_bry excluded; Bry_bfr tmp_bfr;
|
||||
public void Init_page(String ttl, String text) {fxt.Init_page_create(ttl, text);}
|
||||
public Nearby_mgr_fxt Init_results_max(int v) {nearby_mgr.Results_max_(v); return this;}
|
||||
public void Test_find(String src, String trg, String... expd) {
|
||||
List_adp actl = nearby_mgr.Find_from_to(fxt.Wiki(), Bry_.new_a7(src), Bry_.new_a7(trg), excluded);
|
||||
Tfds.Eq_ary(String_.SplitLines_nl(Xto_str(actl)), expd);
|
||||
}
|
||||
String Xto_str(List_adp list) {
|
||||
int len = list.Count();
|
||||
for (int i = 0; i < len; i++) {
|
||||
Nearby_rslt rslt = (Nearby_rslt)list.Get_at(i);
|
||||
int ttls = rslt.Len();
|
||||
if (i != 0) tmp_bfr.Add_byte_nl();
|
||||
for (int j = 0; j < ttls; j++) {
|
||||
Xoa_ttl ttl = rslt.Get_at(j);
|
||||
if (j != 0) tmp_bfr.Add_byte(Byte_ascii.Pipe);
|
||||
tmp_bfr.Add(ttl.Page_db());
|
||||
}
|
||||
}
|
||||
return tmp_bfr.To_str_and_clear();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.specials.statistics; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*;
|
||||
import org.junit.*;
|
||||
public class Xop_statistics_page_tst {
|
||||
@Before public void init() {fxt.Clear();} private Xop_statistics_page_fxt fxt = new Xop_statistics_page_fxt();
|
||||
@Test public void Basic() {
|
||||
fxt.Test_html(String_.Concat_lines_nl_skip_last
|
||||
( "<div id=\"mw-content-text\">"
|
||||
, "<table class=\"wikitable mw-statistics-table\">"
|
||||
, " <tr>"
|
||||
, " <th colspan=\"2\">Page statistics</th>"
|
||||
, " </tr>"
|
||||
, " <tr class=\"mw-statistics-articles\">"
|
||||
, " <td>Content pages</td>"
|
||||
, " <td class=\"mw-statistics-numbers\" style='text-align:right'>0</td>"
|
||||
, " </tr>"
|
||||
, " <tr class=\"mw-statistics-pages\">"
|
||||
, " <td>Pages<br /><small class=\"mw-statistic-desc\"> All pages in the wiki, including talk pages, redirects, etc.</small></td>"
|
||||
, " <td class=\"mw-statistics-numbers\" style='text-align:right'>0</td>"
|
||||
, " </tr>"
|
||||
, " <tr>"
|
||||
, " <th colspan=\"2\">Namespace statistics</th>"
|
||||
, " </tr>"
|
||||
, "</table>"
|
||||
, "</div>"
|
||||
));
|
||||
}
|
||||
}
|
||||
class Xop_statistics_page_fxt {
|
||||
public void Clear() {
|
||||
parser_fxt = new Xop_fxt();
|
||||
parser_fxt.Reset();
|
||||
wiki = parser_fxt.Wiki();
|
||||
special_page = wiki.Special_mgr().Page_statistics();
|
||||
} private Xop_fxt parser_fxt; private Xop_statistics_page special_page; private Xowe_wiki wiki;
|
||||
public void Test_html(String expd) {
|
||||
Tfds.Eq_str_lines(expd, String_.new_u8(special_page.Build_html(wiki)));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user