/*
* Copyright 2000-2016 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.tests.server.component.customlayout;
import org.junit.Test;
import com.vaadin.tests.design.DeclarativeTestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.CustomLayout;
import com.vaadin.ui.Label;
/**
* Tests declarative support for {@link CustomLayout}.
*
* @since
* @author Vaadin Ltd
*/
public class CustomLayoutDeclarativeTest
extends DeclarativeTestBase<CustomLayout> {
@Test
public void testEmpty() {
String design = "<vaadin-custom-layout>";
CustomLayout expected = new CustomLayout();
test(design, expected);
}
@Test
public void testWithChildren() {
String design = "<vaadin-custom-layout>" + //
"<vaadin-button plain-text :location='b'></vaadin-button>" + //
"<vaadin-label plain-text :location='l'></vaadin-label>" + //
"</vaadin-custom-layout>";
CustomLayout expected = new CustomLayout();
expected.addComponent(new Button(), "b");
expected.addComponent(new Label(), "l");
test(design, expected);
}
@Test
public void testWithOneChild() {
String design = "<vaadin-custom-layout><vaadin-button plain-text></vaadin-button></vaadin-custom-layout>";
CustomLayout expected = new CustomLayout();
expected.addComponent(new Button());
test(design, expected);
}
@Test
public void testWithTemplate() {
String design = "<vaadin-custom-layout template-name='template.html'></vaadin-custom-layout>";
CustomLayout expected = new CustomLayout("template.html");
test(design, expected);
}
@Test
public void testWithDuplicateLocations() {
String design = "<vaadin-custom-layout>" + //
"<vaadin-button plain-text :location='foo'></vaadin-button>" + //
"<vaadin-label plain-text :location='foo'></vaadin-label>" + //
"</vaadin-custom-layout>";
CustomLayout expected = new CustomLayout();
expected.addComponent(new Button(), "foo");
expected.addComponent(new Label(), "foo");
testRead(design, expected);
String written = "<vaadin-custom-layout>" + //
"<vaadin-label plain-text :location='foo'></vaadin-label>" + //
"</vaadin-custom-layout>";
testWrite(written, expected);
}
protected void test(String design, CustomLayout expected) {
testRead(design, expected);
testWrite(design, expected);
}
}