/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* 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 org.kie.workbench.common.stunner.bpmn.client.forms.fields.model;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.workbench.common.stunner.bpmn.client.forms.util.StringUtils;
import org.mockito.Mockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.junit.Assert.*;
@RunWith(PowerMockRunner.class)
@PrepareForTest(StringUtils.class)
public class AssignmentTest extends AssignmentBaseTest {
AssignmentData ad = Mockito.mock(AssignmentData.class);
@Before
public void setUp() throws Exception {
super.setUp();
}
@After
public void tearDown() {
super.tearDown();
}
/**
* Uses mock implementation of urlEncodeConstant and urlDecodeConstant
*/
@Test
public void testSerializeDeserialize() {
Assignment a = new Assignment(ad,
"input1",
Variable.VariableType.INPUT,
"String",
null,
null,
null);
serializeDeserialize(ad,
a,
"-_.!~*'( ) ");
serializeDeserialize(ad,
a,
";/?:&=+$,#");
serializeDeserialize(ad,
a,
"http://www.test.com/getit?a=1&b=2");
serializeDeserialize(ad,
a,
"a,b=c:aa,,bb==cc");
serializeDeserialize(ad,
a,
"a|=b=|c:a[=b=[c:a]=b=]c");
serializeDeserialize(ad,
a,
"C:\\home\\joe bloggs\\test\\stuff.txt");
serializeDeserialize(ad,
a,
"a bb ");
serializeDeserialize(ad,
a,
"123");
serializeDeserialize(ad,
a,
"123.456 ");
serializeDeserialize(ad,
a,
"\"hello\"");
serializeDeserialize(ad,
a,
"greeting={\"hello\"}");
}
public void serializeDeserialize(AssignmentData ad,
Assignment assignment,
String constant) {
assignment.setConstant(constant);
String s = assignment.toString();
Assignment newA = Assignment.deserialize(ad,
s);
String deserializedConstant = newA.getConstant();
assertEquals(constant,
deserializedConstant);
}
/**
* Uses prepared examples of constants encoded by com.google.gwt.http.client.URL, which is mocked
* in the tests.
*/
@Test
public void testDeserialize() {
Assignment a = new Assignment(ad,
"input1",
Variable.VariableType.INPUT,
"String",
null,
null,
null);
deserialize(ad,
a,
"-_.!~*'( )",
"-_.!~*'(+)",
"-_.%21%7E*%27%28+%29");
deserialize(ad,
a,
";/?:&=+$,#",
"%3B%2F%3F%3A%26%3D%2B%24%2C%23",
"%3B%2F%3F%3A%26%3D%2B%24%2C%23");
deserialize(ad,
a,
"http://www.test.com/getit?a=1&b=2",
"http%3A%2F%2Fwww.test.com%2Fgetit%3Fa%3D1%26b%3D2",
"http%3A%2F%2Fwww.test.com%2Fgetit%3Fa%3D1%26b%3D2");
deserialize(ad,
a,
"a,b=c:aa,,bb==cc",
"a%2Cb%3Dc%3Aaa%2C%2Cbb%3D%3Dcc",
"a%2Cb%3Dc%3Aaa%2C%2Cbb%3D%3Dcc");
deserialize(ad,
a,
"a|=b=|c:a[=b=[c:a]=b=]c",
"a%7C%3Db%3D%7Cc%3Aa%5B%3Db%3D%5Bc%3Aa%5D%3Db%3D%5Dc",
"a%7C%3Db%3D%7Cc%3Aa%5B%3Db%3D%5Bc%3Aa%5D%3Db%3D%5Dc");
deserialize(ad,
a,
"C:\\home\\joe bloggs\\test\\stuff.txt",
"C%3A%5Chome%5Cjoe+bloggs%5Ctest%5Cstuff.txt",
"C%3A%5Chome%5Cjoe+bloggs%5Ctest%5Cstuff.txt");
deserialize(ad,
a,
"a bb ",
"a+bb++",
"a%20bb%20%20");
deserialize(ad,
a,
"a+bb++",
"a%2Bbb%2B%2B",
"a%2Bbb%2B%2B");
deserialize(ad,
a,
"a+ a +bb++ bb ++",
"a%2B%20a%20%2Bbb%2B%2B%20%20bb%20%20%2B%2B",
"a%2B%20a%20%2Bbb%2B%2B%20%20bb%20%20%2B%2B");
}
public void deserialize(AssignmentData ad,
Assignment assignment,
String constant,
String jsonEncodedConstant,
String bpmn2EncodedConstant) {
assignment.setConstant(constant);
String s = assignment.toString();
// replace the mocked encoded constant with the one that would occur at runtime
s = s.replace(bpmn2EncodedConstant,
jsonEncodedConstant);
Assignment newA = Assignment.deserialize(ad,
s);
String deserializedConstant = newA.getConstant();
assertEquals(constant,
deserializedConstant);
}
}