/*
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.xtns.proofreadPage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import org.junit.*; import gplx.xowa.apps.cfgs.*;
public class Pp_pages_nde_hdr_tst {
private final Xop_fxt fxt = new Xop_fxt();
@Before public void Init() {
Io_mgr.Instance.InitEngine_mem();
fxt.Wiki().Xtn_mgr().Xtn_proofread().Enabled_y_();
fxt.Wiki().Cache_mgr().Page_cache().Free_mem(true);
fxt.Wiki().Db_mgr().Load_mgr().Clear(); // must clear; otherwise fails b/c files get deleted, but wiki.data_mgr caches the Xowd_regy_mgr (the .reg file) in memory;
fxt.Wiki().Ns_mgr().Add_new(Xowc_xtn_pages.Ns_page_id_default, "Page").Add_new(Xowc_xtn_pages.Ns_index_id_default, "Index").Init();
fxt.Init_page_create("MediaWiki:Proofreadpage_header_template", String_.Concat
( "{{#if:{{{value|}}}|value={{{value}}};|value=nil;}}"
, "{{#if:{{{current|}}}|current={{{current}}};|}}"
, "{{#if:{{{prev|}}}|prev={{{prev}}};|}}"
, "{{#if:{{{next|}}}|next={{{next}}};|}}"
, "{{#if:{{{from|}}}|from={{{from}}};|}}"
, "{{#if:{{{to|}}}|to={{{to}}};|}}"
, "{{#if:{{{custom|}}}|custom={{{custom}}};|}}"
, "\n\n"
));
}
@Test public void Default_to_toc() { // PURPOSE: default header to "toc" if no "from", "to", "include"; DATE:2014-01-27
fxt.Init_page_create("Index:A", "");
// only index supplied; add header='toc'
fxt.Test_parse_page_wiki_str("<pages index='A'/>", String_.Concat_lines_nl
( "<p>value=toc;"
, "</p>"
, ""
, "<p><br/>"
, "</p>"
));
fxt.Init_page_create("Page:A/1", "A/1");
// from specified; don't add toc
fxt.Test_parse_page_wiki_str("<pages index='A' from='1'/>", String_.Concat_lines_nl
( "<p>A/1 "
, "</p>"
));
}
@Test public void From_set() { // PURPOSE: "from" should (a) appear in toc; and (b) select pages; DATE:2014-01-27
fxt.Init_page_create("Index:A" , "idx");
fxt.Init_page_create("Page:A/1", "a1");
fxt.Init_page_create("Page:A/2", "a2");
fxt.Init_page_create("Page:A/3", "a3");
fxt.Test_parse_page_wiki_str("<pages index='A' from=2 to=2 header='toc'/>", String_.Concat_lines_nl
( "<p>value=toc;from=2;to=2;"
, "</p>"
, ""
, "<p>a2 "
, "</p>"
));
}
@Test public void Mainspace_toc() { // PURPOSE: Mainspace links should be sent to toc; DATE:2014-01-27
fxt.Init_page_create("Index:A" , String_.Concat_lines_nl_skip_last
( "[[Page/1]]"
, "[[Page/2]]"
, "[[Page/3]]"
));
// next only
fxt.Page_ttl_("Page/1");
fxt.Test_parse_page_wiki_str("<pages index='A' />", String_.Concat_lines_nl
( "<p>value=toc;current=<b>Page/1</b>;next=<a href=\"/wiki/Page/2\">Page/2</a>;"
, "</p>"
, ""
, "<p><br/>"
, "</p>"
));
// next and prev
fxt.Page_ttl_("Page/2");
fxt.Test_parse_page_wiki_str("<pages index='A' />", String_.Concat_lines_nl
( "<p>value=toc;current=<b>Page/2</b>;prev=<a href=\"/wiki/Page/1\">Page/1</a>;next=<a href=\"/wiki/Page/3\">Page/3</a>;"
, "</p>"
, ""
, "<p><br/>"
, "</p>"
));
// prev only
fxt.Page_ttl_("Page/3");
fxt.Test_parse_page_wiki_str("<pages index='A' />", String_.Concat_lines_nl
( "<p>value=toc;current=<b>Page/3</b>;prev=<a href=\"/wiki/Page/2\">Page/2</a>;"
, "</p>"
, ""
, "<p><br/>"
, "</p>"
));
// override current only;
fxt.Page_ttl_("Page/2");
fxt.Test_parse_page_wiki_str("<pages index='A' current='custom_cur'/>", String_.Concat_lines_nl
( "<p>value=toc;current=custom_cur;prev=<a href=\"/wiki/Page/1\">Page/1</a>;next=<a href=\"/wiki/Page/3\">Page/3</a>;"
, "</p>"
, ""
, "<p><br/>"
, "</p>"
));
// override current, prev, next
fxt.Test_parse_page_wiki_str("<pages index='A' current='custom_cur' prev='custom_prv' next='custom_nxt'/>", String_.Concat_lines_nl
( "<p>value=toc;current=custom_cur;prev=custom_prv;next=custom_nxt;"
, "</p>"
, ""
, "<p><br/>"
, "</p>"
));
}
@Test public void Mainspace_caption() { // PURPOSE: extract caption; DATE:2014-01-27
fxt.Init_page_create("Index:A" , String_.Concat_lines_nl_skip_last
( "[[Page/1|Caption_1]]"
, "[[Page/2]]"
, "[[Page/3]]"
));
fxt.Page_ttl_("Page/2");
fxt.Test_parse_page_wiki_str("<pages index='A' />", String_.Concat_lines_nl
( "<p>value=toc;current=<b>Page/2</b>;prev=<a href=\"/wiki/Page/1\">Caption_1</a>;next=<a href=\"/wiki/Page/3\">Page/3</a>;"
, "</p>"
, ""
, "<p><br/>"
, "</p>"
));
}
@Test public void Xwiki() { // PURPOSE: Mainspace links should be sent to toc; DATE:2014-01-27
fxt.Init_xwiki_add_wiki_and_user_("commons", "commons.wikimedia.org");
fxt.Init_page_create("Index:A" , String_.Concat_lines_nl_skip_last
( "[[Page/1]]"
, "[[:commons:File:A.png]]"
));
// next only
fxt.Page_ttl_("Page/1");
fxt.Test_parse_page_wiki_str("<pages index='A' />", String_.Concat_lines_nl
( "<p>value=toc;current=<b>Page/1</b>;next=<a href=\"/site/commons.wikimedia.org/wiki/File:A.png\">File:A.png</a>;"
, "</p>"
, ""
, "<p><br/>"
, "</p>"
));
}
}