Skip to content

Commit

Permalink
Add testcases | pure comp mode switch | fix setCheckmark(false) updat…
Browse files Browse the repository at this point in the history
…e to client failed in indeterminate mode
  • Loading branch information
JamsonChan committed Jan 2, 2024
1 parent ca1d398 commit f1877cd
Show file tree
Hide file tree
Showing 6 changed files with 260 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Button;
import org.zkoss.zul.DefaultTreeModel;
import org.zkoss.zul.DefaultTreeNode;
import org.zkoss.zul.Tree;
Expand Down
125 changes: 125 additions & 0 deletions zktest/src/main/webapp/test2/F100-ZK-3853-3.zul
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
F100-ZK-3853-3.zul
Purpose:
Description:
History:
Tue Jan 02 19:14:59 CST 2024, Created by jamson
Copyright (C) 2024 Potix Corporation. All Rights Reserved.
-->
<zk>
<label multiline="true">
Tri-State Tree Pure Component Test.
click `toggle checkmark`, `toggle multiple`, `toggle indeterminate` to see these state switch according to the following rules:
* If toggle `indeterminate` false -> true, `checkmark` and `multiple` will be set to true at the same time.
* If toggle `multiple` or `checkmark` true -> false, if `indeterminate` is true, then it'll be set to false.
* If every mode change to `indeterminate` mode, initially it'll generate 3-state based on current checkmark.
</label>
<button label="toggle checkmark">
<attribute name="onClick">
tree.setCheckmark(!tree.isCheckmark());
System.out.println(tree.isCheckmark() + " " + tree.isMultiple() + " " + tree.isIndeterminate());
</attribute>
</button>
<button label="toggle multiple">
<attribute name="onClick">
tree.setMultiple(!tree.isMultiple());
System.out.println(tree.isCheckmark() + " " + tree.isMultiple() + " " + tree.isIndeterminate());
</attribute>
</button>
<button label="toggle indeterminate">
<attribute name="onClick">
tree.setIndeterminate(!tree.isIndeterminate());
System.out.println(tree.isCheckmark() + " " + tree.isMultiple() + " " + tree.isIndeterminate());
</attribute>
</button>
<tree id="tree">
<treecols>
<treecol label="treecol" />
</treecols>
<treechildren>
<treeitem>
<treerow>
<treecell label="0" />
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="1"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="2" />
</treerow>
</treeitem>
</treechildren>
</treeitem>
<treeitem>
<treerow>
<treecell label="3" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="4" />
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="5" />
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="6" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="7" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="8" />
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="9" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="10" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="11" />
</treerow>
</treeitem>
</treechildren>
</treeitem>
</treechildren>
</treeitem>
<treeitem>
<treerow>
<treecell label="12" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="13" />
</treerow>
</treeitem>
</treechildren>
</treeitem>
</treechildren>
</tree>
</zk>
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public void test() {
assertHdcm(2);
assertCm(2, 4, 5, 8);
assertCm(1, 3, 7, 10);
assertCm(0, 1, 2, 6, 9, 11, 12, 13);
assertCm(0, 0, 1, 2, 6, 9, 11, 12, 13);

clickHdcm();

Expand All @@ -104,7 +104,7 @@ public void test() {
assertHdcm(2);
assertCm(2, 4, 5, 8);
assertCm(1, 3, 7, 10);
assertCm(0, 1, 2, 6, 9, 11, 12, 13);
assertCm(0, 0, 1, 2, 6, 9, 11, 12, 13);

clickHdcm();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,6 @@

public class F100_ZK_3853_2Test extends F100_ZK_3853_1Test {


@Override
protected boolean isHeadless() {
return false;
}

@Test
public void test() {
super.test();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
/* F100_ZK_3853_3Test.java
Purpose:
Description:
History:
Tue Jan 02 19:34:54 CST 2024, Created by jamson
Copyright (C) 2024 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.zktest.zats.test2;

import org.junit.jupiter.api.Test;

public class F100_ZK_3853_3Test extends F100_ZK_3853_1Test {

/*
mode 0: none
mode 1: checkmark
mode 2: multiple
mode 3: checkmark + multiple
mode 4: indeterminate ( + checkmark + multiple )
*/

@Test
public void none_to_indeterminate() {
connect();

click(jq("@treerow:eq(9)"));
waitResponse();
toggleIndeterminate(); // open

assertHdcm(2);
assertCm(2, 4, 5, 8);
assertCm(1, 9);
assertCm(0, 0, 1, 2, 6, 7, 10, 11, 12, 13);
}

@Test
public void checkmark_to_indeterminate() {
connect();

toggleCheckmark(); // open
click(jq("@treerow:eq(9)"));
waitResponse();

toggleIndeterminate(); // open

assertHdcm(2);
assertCm(2, 4, 5, 8);
assertCm(1, 9);
assertCm(0, 0, 1, 2, 6, 7, 10, 11, 12, 13);
}

@Test
public void multiple_to_indeterminate() {
connect();

toggleMultiple(); // open
click(jq("@treerow:eq(9)"));
waitResponse();

toggleIndeterminate(); // open

assertHdcm(2);
assertCm(2, 4, 5, 8);
assertCm(1, 9);
assertCm(0, 0, 1, 2, 6, 7, 10, 11, 12, 13);
}

@Test
public void checkmark_and_multiple_to_indeterminate() {
connect();

toggleCheckmark(); // open
toggleMultiple(); // open

clickCm(2, 9);

toggleIndeterminate(); // open

assertHdcm(2);
assertCm(2, 0, 4, 5, 8);
assertCm(1, 2, 9);
assertCm(0, 1, 6, 7, 10, 11, 12, 13);
}

@Test
public void indeterminate_to_checkmark_and_multiple() {
connect();

toggleIndeterminate(); // open

click(jq("@treerow:eq(9)"));
waitResponse();

assertHdcm(2);
assertCm(2, 4, 5, 8);
assertCm(1, 9);
assertCm(0, 0, 1, 2, 6, 7, 10, 11, 12, 13);

toggleIndeterminate(); // close

assertHdcm(0);
for (int i = 0; i <= 13; ++i) {
if (i == 9) assertCm(1, 9);
else assertCm(0, i);
}
}

public void toggleCheckmark() {
click(jq("@button:eq(0)"));
waitResponse();
}

public void toggleMultiple() {
click(jq("@button:eq(1)"));
waitResponse();
}

public void toggleIndeterminate() {
click(jq("@button:eq(2)"));
waitResponse();
}

@Override
public void test() {
// don't run super's test()
// inherit just for the methods inside
}
}
2 changes: 1 addition & 1 deletion zul/src/main/java/org/zkoss/zul/Tree.java
Original file line number Diff line number Diff line change
Expand Up @@ -872,9 +872,9 @@ public boolean isCheckmark() {
public void setCheckmark(boolean checkmark) {
if (_checkmark != checkmark) {
_checkmark = checkmark;
smartUpdate("checkmark", checkmark);
if (!checkmark)
setIndeterminate(false);
smartUpdate("checkmark", checkmark);
}
}

Expand Down

0 comments on commit f1877cd

Please sign in to comment.