Wikibase: Default 'null' to 0, not 1 [#792]

staging
gnosygnu 4 years ago
parent f19228c886
commit 72051f4ce9

@ -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()));
}
}

@ -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));
}
}

@ -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)
, "<a href='/wiki/Q1'>item_1</a>"
);
}
@Test public void Entity_pid() {
fxt
.Init_resolved_pid(1, "item_1")
.Test_claim_val
( fxt.Wdata_fxt().Make_claim_entity_pid(1, 1)
, "<a href='/wiki/Property:P1'>item_1</a>"
);
}
@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;39&#34;S, 51°30&#39;26&#34;E (<a href='/wiki/Q2'>Earth</a>)"
);
}
@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;39&#34;S, 51°30&#39;26&#34;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&#39;S, 51°30&#39;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)
, "<a href='/wiki/Q1'>item_1</a>"
);
}
@Test public void Entity_pid() {
fxt
.Init_resolved_pid(1, "item_1")
.Test_claim_val
( fxt.Wdata_fxt().Make_claim_entity_pid(1, 1)
, "<a href='/wiki/Property:P1'>item_1</a>"
);
}
@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;39&#34;S, 51°30&#39;26&#34;E (<a href='/wiki/Q2'>Earth</a>)"
);
}
@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;39&#34;S, 51°30&#39;26&#34;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&#39;S, 51°30&#39;E"
);
}
}

Loading…
Cancel
Save