diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_visitor_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_visitor_tst.java
new file mode 100644
index 000000000..2d9e60de6
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_visitor_tst.java
@@ -0,0 +1,43 @@
+/*
+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.scribunto.libs;
+
+import gplx.Bry_;
+import gplx.Double_;
+import gplx.Keyval;
+import gplx.core.tests.Gftest;
+import gplx.xowa.xtns.wbases.claims.enums.Wbase_claim_value_type_;
+import gplx.xowa.xtns.wbases.claims.itms.Wbase_claim_globecoordinate;
+import org.junit.Test;
+
+public class Scrib_lib_wikibase_srl_visitor_tst {
+ private final Scrib_lib_wikibase_srl_visitor_fxt fxt = new Scrib_lib_wikibase_srl_visitor_fxt();
+ @Test
+ public void Geo_null_precision() {
+ fxt.TestGeoPrecision(0, "null"); // 2020-09-03|ISSUE#:792|null precision should default to 0 not 1;PAGE:wd:Q168751
+ }
+}
+class Scrib_lib_wikibase_srl_visitor_fxt {
+ private final Scrib_lib_wikibase_srl_visitor visitor = new Scrib_lib_wikibase_srl_visitor();
+ public void TestGeoPrecision(double expd, String prc) {
+ String lat = "12";
+ String lng = "34";
+ visitor.Visit_globecoordinate(new Wbase_claim_globecoordinate(123, Wbase_claim_value_type_.Tid__value, Bry_.new_a7(lat), Bry_.new_a7(lng), null, Bry_.new_u8_safe(prc), null));
+ Keyval[] actl = visitor.Rv();
+ Keyval[] actlGeo = (Keyval[])actl[1].Val();
+ Gftest.Eq__double(expd, Double_.cast(actlGeo[4].Val()));
+ }
+}
\ No newline at end of file
diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_globecoordinate.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_globecoordinate.java
index 5e5dcb22d..110c6d076 100644
--- a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_globecoordinate.java
+++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_globecoordinate.java
@@ -1,6 +1,6 @@
/*
XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012-2017 gnosygnu@gmail.com
+Copyright (C) 2012-2020 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.
@@ -13,29 +13,42 @@ 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.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*;
-import gplx.xowa.xtns.wbases.claims.enums.*;
-public class Wbase_claim_globecoordinate extends Wbase_claim_base {
- public Wbase_claim_globecoordinate(int pid, byte snak_tid, byte[] lat, byte[] lng, byte[] alt, byte[] prc, byte[] glb) {super(pid, snak_tid);
- this.lat = lat; this.lng = lng; this.alt = alt; this.prc = prc; this.glb = glb;
- }
- @Override public byte Val_tid() {return Wbase_claim_type_.Tid__globecoordinate;}
- public byte[] Lat() {return lat;} private final byte[] lat;
- public byte[] Lng() {return lng;} private final byte[] lng;
- public byte[] Alt() {return alt;} private final byte[] alt;
- public byte[] Prc() {return prc;} private final byte[] prc;
- public byte[] Glb() {return glb;} private final byte[] glb;
- public byte[] Glb_ttl() {return glb_ttl;} private byte[] glb_ttl;
-
- public void Glb_ttl_(byte[] v) {glb_ttl = v;}
- public Decimal_adp Prc_as_num() {
- if (prc_as_num == null)
- prc_as_num = Bry_.Eq(prc, Object_.Bry__null) ? Decimal_adp_.One : Decimal_adp_.parse(String_.new_a7(prc));
- return prc_as_num;
- } private Decimal_adp prc_as_num;
-
- @Override public void Welcome(Wbase_claim_visitor visitor) {visitor.Visit_globecoordinate(this);}
- @Override public String toString() {// TEST:
- return String_.Concat_with_str("|", Wbase_claim_value_type_.Reg.Get_str_or_fail(this.Snak_tid()), Wbase_claim_type_.Reg.Get_str_or_fail(this.Val_tid()), String_.new_u8(lat), String_.new_u8(lng), String_.new_u8(alt), String_.new_u8(prc), String_.new_u8(glb));
- }
-}
+package gplx.xowa.xtns.wbases.claims.itms;
+
+import gplx.Bry_;
+import gplx.Decimal_adp;
+import gplx.Decimal_adp_;
+import gplx.Object_;
+import gplx.String_;
+import gplx.xowa.xtns.wbases.claims.Wbase_claim_visitor;
+import gplx.xowa.xtns.wbases.claims.enums.Wbase_claim_type_;
+import gplx.xowa.xtns.wbases.claims.enums.Wbase_claim_value_type_;
+
+public class Wbase_claim_globecoordinate extends Wbase_claim_base {
+ public Wbase_claim_globecoordinate(int pid, byte snak_tid, byte[] lat, byte[] lng, byte[] alt, byte[] prc, byte[] glb) {
+ super(pid, snak_tid);
+ this.lat = lat; this.lng = lng; this.alt = alt; this.prc = prc; this.glb = glb;
+ }
+ @Override public byte Val_tid() {return Wbase_claim_type_.Tid__globecoordinate;}
+ public byte[] Lat() {return lat;} private final byte[] lat;
+ public byte[] Lng() {return lng;} private final byte[] lng;
+ public byte[] Alt() {return alt;} private final byte[] alt;
+ public byte[] Prc() {return prc;} private final byte[] prc;
+ public byte[] Glb() {return glb;} private final byte[] glb;
+ public byte[] Glb_ttl() {return glb_ttl;} private byte[] glb_ttl;
+
+ public void Glb_ttl_(byte[] v) {glb_ttl = v;}
+ public Decimal_adp Prc_as_num() {
+ if (prc_as_num == null) {
+ prc_as_num = Bry_.Eq(prc, Object_.Bry__null)
+ ? Decimal_adp_.Zero // 2020-09-03|ISSUE#:792|null precision should default to 0 not 1;PAGE:wd:Q168751
+ : Decimal_adp_.parse(String_.new_a7(prc));
+ }
+ return prc_as_num;
+ } private Decimal_adp prc_as_num;
+
+ @Override public void Welcome(Wbase_claim_visitor visitor) {visitor.Visit_globecoordinate(this);}
+ @Override public String toString() {// TEST:
+ return String_.Concat_with_str("|", Wbase_claim_value_type_.Reg.Get_str_or_fail(this.Snak_tid()), Wbase_claim_type_.Reg.Get_str_or_fail(this.Val_tid()), String_.new_u8(lat), String_.new_u8(lng), String_.new_u8(alt), String_.new_u8(prc), String_.new_u8(glb));
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__html_wtr_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__html_wtr_tst.java
index 0abc1d4ec..ca05e64de 100644
--- a/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__html_wtr_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__html_wtr_tst.java
@@ -1,6 +1,6 @@
/*
XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012-2017 gnosygnu@gmail.com
+Copyright (C) 2012-2020 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.
@@ -13,89 +13,93 @@ 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.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*;
-import org.junit.*;
-import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.itms.times.*; import gplx.xowa.xtns.wbases.parsers.*; import gplx.xowa.apps.apis.xowa.html.*;
-public class Wdata_visitor__html_wtr_tst {
- @Before public void init() {fxt.init();} private Wdata_hwtr_mgr_fxt fxt = new Wdata_hwtr_mgr_fxt();
- @Test public void Monolingualtext() {
- fxt
- .Test_claim_val
- ( fxt.Wdata_fxt().Make_claim_monolingual(1, "en", "Motto")
- , "Motto [en]"
- );
- }
- @Test public void Time() {
- fxt
- .Test_claim_val
- ( fxt.Wdata_fxt().Make_claim_time(1, "2001-02-03 04:05:06", Wbase_date.Fmt_ymdhns)
- , "4:05:06 3 Feb 2001"
- );
- }
- @Test public void Time__julian() {
- fxt
- .Test_claim_val
- ( fxt.Wdata_fxt().Make_claim_time(1, "2001-02-03 04:05:06", Bry_.Empty, Bry_.new_a7("http://www.wikidata.org/entity/Q1985786"))
- , "4:05:06 3 Feb 2001"
- );
- }
- @Test public void Quantity_ubound_lbound() {
- fxt
- .Test_claim_val
- ( fxt.Wdata_fxt().Make_claim_quantity(1, "50", "", "60", "30")
- , "30-60"
- );
- }
- @Test public void Quantity_same() {
- fxt
- .Test_claim_val
- ( fxt.Wdata_fxt().Make_claim_quantity(1, "50", "1", "60", "40")
- , "50±10"
- );
- }
- @Test public void Quantity_frac() {
- fxt
- .Test_claim_val
- ( fxt.Wdata_fxt().Make_claim_quantity(1, "+0.1234", "1", "+0.1235", "+0.1233")
- , "0.1234±0.0001"
- );
- }
- @Test public void Entity_qid() {
- fxt
- .Init_resolved_qid(1, "item_1")
- .Test_claim_val
- ( fxt.Wdata_fxt().Make_claim_entity_qid(1, 1)
- , "item_1"
- );
- }
- @Test public void Entity_pid() {
- fxt
- .Init_resolved_pid(1, "item_1")
- .Test_claim_val
- ( fxt.Wdata_fxt().Make_claim_entity_pid(1, 1)
- , "item_1"
- );
- }
- @Test public void Globecoordinate() {
- fxt
- .Init_resolved_qid(2, "Earth")
- .Test_claim_val
- ( fxt.Wdata_fxt().Make_claim_geo(1, "51.5072222", "-0.1275", ".000027777", "123", "http://www.wikidata.org/entity/Q2")
- , "0°7'39"S, 51°30'26"E (Earth)"
- );
- }
- @Test public void Globecoordinate__globe__null() {
- fxt
- .Test_claim_val
- ( fxt.Wdata_fxt().Make_claim_geo(1, "51.5072222", "-0.1275", ".000027777", "null", "")
- , "0°7'39"S, 51°30'26"E"
- );
- }
- @Test public void Globecoordinate__precision__0() { // PURPOSE: 0 precision was causing divide by 0 error; PAGE:ru.w:Лысково_(Калужская_область) DATE:2016-11-24
- fxt
- .Test_claim_val
- ( fxt.Wdata_fxt().Make_claim_geo(1, "51.5072222", "-0.1275", "0", "null", "")
- , "0°6'S, 51°30'E"
- );
- }
-}
+package gplx.xowa.xtns.wbases.hwtrs;
+
+import gplx.Bry_;
+import gplx.xowa.xtns.wbases.claims.itms.times.Wbase_date;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Wdata_visitor__html_wtr_tst {
+ @Before public void init() {fxt.init();} private Wdata_hwtr_mgr_fxt fxt = new Wdata_hwtr_mgr_fxt();
+ @Test public void Monolingualtext() {
+ fxt
+ .Test_claim_val
+ ( fxt.Wdata_fxt().Make_claim_monolingual(1, "en", "Motto")
+ , "Motto [en]"
+ );
+ }
+ @Test public void Time() {
+ fxt
+ .Test_claim_val
+ ( fxt.Wdata_fxt().Make_claim_time(1, "2001-02-03 04:05:06", Wbase_date.Fmt_ymdhns)
+ , "4:05:06 3 Feb 2001"
+ );
+ }
+ @Test public void Time__julian() {
+ fxt
+ .Test_claim_val
+ ( fxt.Wdata_fxt().Make_claim_time(1, "2001-02-03 04:05:06", Bry_.Empty, Bry_.new_a7("http://www.wikidata.org/entity/Q1985786"))
+ , "4:05:06 3 Feb 2001"
+ );
+ }
+ @Test public void Quantity_ubound_lbound() {
+ fxt
+ .Test_claim_val
+ ( fxt.Wdata_fxt().Make_claim_quantity(1, "50", "", "60", "30")
+ , "30-60"
+ );
+ }
+ @Test public void Quantity_same() {
+ fxt
+ .Test_claim_val
+ ( fxt.Wdata_fxt().Make_claim_quantity(1, "50", "1", "60", "40")
+ , "50±10"
+ );
+ }
+ @Test public void Quantity_frac() {
+ fxt
+ .Test_claim_val
+ ( fxt.Wdata_fxt().Make_claim_quantity(1, "+0.1234", "1", "+0.1235", "+0.1233")
+ , "0.1234±0.0001"
+ );
+ }
+ @Test public void Entity_qid() {
+ fxt
+ .Init_resolved_qid(1, "item_1")
+ .Test_claim_val
+ ( fxt.Wdata_fxt().Make_claim_entity_qid(1, 1)
+ , "item_1"
+ );
+ }
+ @Test public void Entity_pid() {
+ fxt
+ .Init_resolved_pid(1, "item_1")
+ .Test_claim_val
+ ( fxt.Wdata_fxt().Make_claim_entity_pid(1, 1)
+ , "item_1"
+ );
+ }
+ @Test public void Globecoordinate() {
+ fxt
+ .Init_resolved_qid(2, "Earth")
+ .Test_claim_val
+ ( fxt.Wdata_fxt().Make_claim_geo(1, "51.5072222", "-0.1275", ".000027777", "123", "http://www.wikidata.org/entity/Q2")
+ , "0°7'39"S, 51°30'26"E (Earth)"
+ );
+ }
+ @Test public void Globecoordinate__globe__null() {
+ fxt
+ .Test_claim_val
+ ( fxt.Wdata_fxt().Make_claim_geo(1, "51.5072222", "-0.1275", ".000027777", "null", "")
+ , "0°7'39"S, 51°30'26"E"
+ );
+ }
+ @Test public void Globecoordinate__precision__0() { // PURPOSE: 0 precision was causing divide by 0 error; PAGE:ru.w:Лысково_(Калужская_область) DATE:2016-11-24
+ fxt
+ .Test_claim_val
+ ( fxt.Wdata_fxt().Make_claim_geo(1, "51.5072222", "-0.1275", "0", "null", "")
+ , "0°6'S, 51°30'E"
+ );
+ }
+}