]> source.dussan.org Git - vaadin-framework.git/blob
452f61ee1bb40f4742968f0ffbd6d94c0615938f
[vaadin-framework.git] /
1 /*
2  * Copyright 2000-2016 Vaadin Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */
16 package com.vaadin.tests.components.grid.basicfeatures.escalator;
17
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.assertFalse;
20 import static org.junit.Assert.assertTrue;
21
22 import java.util.regex.Matcher;
23 import java.util.regex.Pattern;
24
25 import org.junit.Test;
26 import org.openqa.selenium.WebElement;
27
28 import com.vaadin.tests.components.grid.basicfeatures.EscalatorBasicClientFeaturesTest;
29
30 public class EscalatorColumnFreezingTest
31         extends EscalatorBasicClientFeaturesTest {
32
33     private final static Pattern TRANSFORM_PATTERN = Pattern.compile(// @formatter:off
34             // any start of the string
35             ".*"
36
37             // non-capturing group for "webkitTransform: " or "transform: "
38             + "(?:webkitT|t)ransform: "
39
40             // non-capturing group for "translate" or "translate3d"
41             + "translate(?:3d)?"
42
43             // capturing the digits in e.g "(100px,"
44             + "\\((\\d+)px,"
45
46             // any end of the string
47             + ".*", Pattern.CASE_INSENSITIVE);
48
49             // @formatter:on
50
51     private final static Pattern LEFT_PATTERN = Pattern
52             .compile(".*left: (\\d+)px.*", Pattern.CASE_INSENSITIVE);
53
54     private static final int NO_FREEZE = -1;
55
56     @Test
57     public void testNoFreeze() {
58         openTestURL();
59         populate();
60
61         WebElement bodyCell = getBodyCell(0, 0);
62         assertFalse(isFrozen(bodyCell));
63         assertEquals(NO_FREEZE, getFrozenScrollCompensation(bodyCell));
64     }
65
66     @Test
67     public void testOneFreeze() {
68         openTestURL();
69         populate();
70
71         selectMenuPath(FEATURES, FROZEN_COLUMNS, FREEZE_1_COLUMN);
72         int scrollPx = 60;
73         scrollHorizontallyTo(scrollPx);
74
75         WebElement bodyCell = getBodyCell(0, 0);
76         assertTrue(isFrozen(bodyCell));
77         assertEquals(scrollPx, getFrozenScrollCompensation(bodyCell));
78     }
79
80     @Test
81     public void testFreezeToggle() {
82         openTestURL();
83         populate();
84
85         selectMenuPath(FEATURES, FROZEN_COLUMNS, FREEZE_1_COLUMN);
86         scrollHorizontallyTo(100);
87         selectMenuPath(FEATURES, FROZEN_COLUMNS, FREEZE_0_COLUMNS);
88
89         WebElement bodyCell = getBodyCell(0, 0);
90         assertFalse(isFrozen(bodyCell));
91         assertEquals(NO_FREEZE, getFrozenScrollCompensation(bodyCell));
92     }
93
94     private static boolean isFrozen(WebElement cell) {
95         return cell.getAttribute("class").contains("frozen");
96     }
97
98     private static int getFrozenScrollCompensation(WebElement cell) {
99         String styleAttribute = cell.getAttribute("style");
100         Matcher transformMatcher = TRANSFORM_PATTERN.matcher(styleAttribute);
101         Matcher leftMatcher = LEFT_PATTERN.matcher(styleAttribute);
102
103         if (transformMatcher.find()) {
104             return Integer.parseInt(transformMatcher.group(1));
105         } else if (leftMatcher.find()) {
106             return Integer.parseInt(leftMatcher.group(1));
107         } else {
108             return NO_FREEZE;
109         }
110     }
111 }