2019-07-12 03:17:06 +00:00
|
|
|
/*
|
|
|
|
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.mediawiki; import gplx.*; import gplx.xowa.*;
|
|
|
|
import org.junit.*; import gplx.core.tests.*;
|
2020-01-05 13:52:37 +00:00
|
|
|
public class XophpArray__tst { // REF:https://www.php.net/manual/en/function.array-merge.php
|
|
|
|
private final XophpArray__fxt fxt = new XophpArray__fxt();
|
2019-07-12 03:17:06 +00:00
|
|
|
@Test public void array_merge__basic() {
|
|
|
|
XophpArray ary1 = fxt.Make().Add("key1", "val1").Add("a");
|
|
|
|
XophpArray ary2 = fxt.Make().Add("key2", "val2").Add("b");
|
2020-03-31 11:46:17 +00:00
|
|
|
fxt.Test__eq
|
2019-07-12 03:17:06 +00:00
|
|
|
( fxt.Make().Add("key1", "val1").Add("a").Add("key2", "val2").Add("b")
|
2020-03-31 11:46:17 +00:00
|
|
|
, XophpArray_.array_merge(ary1, ary2));
|
2019-07-12 03:17:06 +00:00
|
|
|
}
|
|
|
|
@Test public void array_merge__same_key() {
|
|
|
|
XophpArray ary1 = fxt.Make().Add("key", "val1");
|
|
|
|
XophpArray ary2 = fxt.Make().Add("key", "val2");
|
2020-03-31 11:46:17 +00:00
|
|
|
fxt.Test__eq
|
2019-07-12 03:17:06 +00:00
|
|
|
( fxt.Make().Add("key", "val2")
|
2020-03-31 11:46:17 +00:00
|
|
|
, XophpArray_.array_merge(ary1, ary2));
|
2019-07-12 03:17:06 +00:00
|
|
|
}
|
|
|
|
@Test public void array_merge__same_idx() {
|
|
|
|
XophpArray ary1 = fxt.Make().Add(0, "a");
|
|
|
|
XophpArray ary2 = fxt.Make().Add(0, "b");
|
2020-03-31 11:46:17 +00:00
|
|
|
fxt.Test__eq
|
2019-07-12 03:17:06 +00:00
|
|
|
( fxt.Make().Add(0, "a").Add(1, "b")
|
2020-03-31 11:46:17 +00:00
|
|
|
, XophpArray_.array_merge(ary1, ary2));
|
2019-07-12 03:17:06 +00:00
|
|
|
}
|
|
|
|
@Test public void array_merge__renumber() {
|
|
|
|
XophpArray ary1 = fxt.Make().Add(3, "a");
|
|
|
|
XophpArray ary2 = fxt.Make().Add(2, "b");
|
2020-03-31 11:46:17 +00:00
|
|
|
fxt.Test__eq
|
2019-07-12 03:17:06 +00:00
|
|
|
( fxt.Make().Add(0, "a").Add(1, "b")
|
2020-03-31 11:46:17 +00:00
|
|
|
, XophpArray_.array_merge(ary1, ary2));
|
2019-07-12 03:17:06 +00:00
|
|
|
}
|
|
|
|
@Test public void array_merge__example_1() {
|
|
|
|
XophpArray ary1 = fxt.Make().Add("color", "red").Add_many(2, 4);
|
|
|
|
XophpArray ary2 = fxt.Make().Add_many("a", "b").Add("color", "green").Add("shape", "trapezoid").Add(4);
|
2020-03-31 11:46:17 +00:00
|
|
|
fxt.Test__eq
|
2019-07-12 03:17:06 +00:00
|
|
|
( fxt.Make().Add("color", "green").Add_many(2, 4, "a", "b").Add("shape", "trapezoid").Add(4)
|
2020-03-31 11:46:17 +00:00
|
|
|
, XophpArray_.array_merge(ary1, ary2));
|
2019-07-12 03:17:06 +00:00
|
|
|
}
|
|
|
|
@Test public void array_merge__example_2() {
|
|
|
|
XophpArray ary1 = fxt.Make();
|
|
|
|
XophpArray ary2 = fxt.Make().Add(1, "data");
|
2020-03-31 11:46:17 +00:00
|
|
|
fxt.Test__eq
|
2019-07-12 03:17:06 +00:00
|
|
|
( fxt.Make().Add(0, "data")
|
2020-03-31 11:46:17 +00:00
|
|
|
, XophpArray_.array_merge(ary1, ary2));
|
|
|
|
}
|
|
|
|
@Test public void array_add() {
|
|
|
|
XophpArray ary1 = fxt.Make().Add(0, "zero_a").Add(2, "two_a").Add(3, "three_a");
|
|
|
|
XophpArray ary2 = fxt.Make().Add(1, "one_b").Add(3, "three_b").Add(4, "four_b");
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add(0, "zero_a").Add(2, "two_a").Add(3, "three_a").Add(1, "one_b").Add(4, "four_b")
|
|
|
|
, XophpArray_.array_add(ary1, ary2));
|
2019-07-12 03:17:06 +00:00
|
|
|
}
|
|
|
|
@Test public void array_splice__bgn_is_positive() {
|
|
|
|
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, 1);
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("a")
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("b", "c", "d")
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_splice__bgn_is_positive_large() {
|
|
|
|
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, 99);
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("a", "b", "c", "d")
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many()
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_splice__bgn_is_negative() {
|
|
|
|
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, -3);
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("a")
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("b", "c", "d")
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_splice__bgn_is_negative_large() {
|
|
|
|
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, -99);
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make()
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("a", "b", "c", "d")
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_splice__len_is_positive() {
|
|
|
|
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, 1, 2);
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("a", "d")
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("b", "c")
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_splice__len_is_positive_large() {
|
|
|
|
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, 1, 99);
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("a")
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("b", "c", "d")
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_splice__len_is_negative() {
|
|
|
|
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, 1, -2);
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("a", "c", "d")
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("b")
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_splice__len_is_negative_large() {
|
|
|
|
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, 1, -99);
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("a", "b", "c", "d")
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make()
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_splice__repl() {
|
|
|
|
XophpArray src = fxt.Make().Add(0, "a").Add(1, "b").Add(2, "c").Add(3, "d");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, 1, 2, fxt.Make().Add(0, "x"));
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add(0, "a").Add(1, "x").Add(2, "d")
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add(0, "b").Add(1, "c")
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_splice__example_1a() {
|
|
|
|
XophpArray src = fxt.Make().Add_many("red", "green", "blue", "yellow");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, 2);
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("red", "green")
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("blue", "yellow")
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_splice__example_1b() {
|
|
|
|
XophpArray src = fxt.Make().Add_many("red", "green", "blue", "yellow");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, 1, -1);
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("red", "yellow")
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("green", "blue")
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_splice__example_1c() {
|
|
|
|
XophpArray src = fxt.Make().Add_many("red", "green", "blue", "yellow");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, 1, 4, XophpArray.New("orange"));
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("red", "orange")
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("green", "blue", "yellow")
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_splice__example_1d() {
|
|
|
|
XophpArray src = fxt.Make().Add_many("red", "green", "blue", "yellow");
|
2020-01-05 13:52:37 +00:00
|
|
|
XophpArray del = XophpArray_.array_splice(src, -1, 1, XophpArray.New("black", "maroon"));
|
2019-07-12 03:17:06 +00:00
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("red", "green", "blue", "black", "maroon")
|
|
|
|
, src
|
|
|
|
);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("yellow")
|
|
|
|
, del
|
|
|
|
);
|
|
|
|
}
|
2020-01-05 13:52:37 +00:00
|
|
|
@Test public void values() {
|
2020-01-04 09:14:36 +00:00
|
|
|
XophpArray orig = fxt.Make().Add("size", "XL").Add("color", "gold");
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add(0, "XL").Add(1, "gold")
|
2020-01-05 13:52:37 +00:00
|
|
|
, orig.values()
|
2020-01-04 09:14:36 +00:00
|
|
|
);
|
|
|
|
}
|
2020-02-03 02:02:11 +00:00
|
|
|
@Test public void array_map() {
|
|
|
|
XophpArray orig = fxt.Make().Add_many("a", "b", "c");
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add_many("A", "B", "C")
|
|
|
|
, XophpArray_.array_map(XophpString_.Callback_owner, "strtoupper", orig)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_flip__basic() {
|
|
|
|
XophpArray orig = fxt.Make().Add_many("oranges", "apples", "pears");
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add("oranges", 0).Add("apples", 1).Add("pears", 2)
|
|
|
|
, XophpArray_.array_flip(orig)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
@Test public void array_flip__collision() {
|
|
|
|
XophpArray orig = fxt.Make().Add("a", 1).Add("b", 1).Add("c", 2);
|
|
|
|
fxt.Test__eq
|
|
|
|
( fxt.Make().Add("1", "b").Add("2", "c")
|
|
|
|
, XophpArray_.array_flip(orig)
|
|
|
|
);
|
|
|
|
}
|
2020-03-16 11:29:05 +00:00
|
|
|
@Test public void implode() {
|
|
|
|
XophpArray orig = fxt.Make().Add_many("a", "b", "c");
|
|
|
|
Gftest.Eq__str
|
|
|
|
( "a b c"
|
|
|
|
, XophpArray_.implode(" ", orig)
|
|
|
|
);
|
|
|
|
}
|
2020-04-09 12:10:22 +00:00
|
|
|
@Test public void in_array() {
|
|
|
|
// PHP samples
|
|
|
|
XophpArray array;
|
|
|
|
// Example #1
|
|
|
|
array = XophpArray.New("Mac", "NT", "Irix", "Linux");
|
|
|
|
Gftest.Eq__bool(Bool_.Y, XophpArray_.in_array("Irix", array));
|
|
|
|
Gftest.Eq__bool(Bool_.N, XophpArray_.in_array("mac" , array));
|
|
|
|
|
|
|
|
// Example #2
|
|
|
|
array = XophpArray.New(12.4d, 1.13d);
|
|
|
|
Gftest.Eq__bool(Bool_.N, XophpArray_.in_array("12.4", array, true));
|
|
|
|
Gftest.Eq__bool(Bool_.Y, XophpArray_.in_array( 1.13d, array, true));
|
|
|
|
|
|
|
|
// Example #3
|
|
|
|
array = XophpArray.New(XophpArray.New('p', 'h'), XophpArray.New('p', 'r'), 'o');
|
|
|
|
Gftest.Eq__bool(Bool_.Y, XophpArray_.in_array(XophpArray.New('p', 'h'), array));
|
|
|
|
Gftest.Eq__bool(Bool_.N, XophpArray_.in_array(XophpArray.New('f', 'i'), array));
|
|
|
|
Gftest.Eq__bool(Bool_.Y, XophpArray_.in_array('o', array));
|
|
|
|
}
|
2019-07-12 03:17:06 +00:00
|
|
|
}
|
2020-01-05 13:52:37 +00:00
|
|
|
class XophpArray__fxt {
|
2019-07-12 03:17:06 +00:00
|
|
|
public XophpArray Make() {return new XophpArray();}
|
|
|
|
public void Test__eq(XophpArray expd, XophpArray actl) {
|
|
|
|
Gftest.Eq__str(expd.To_str(), actl.To_str());
|
|
|
|
}
|
|
|
|
}
|