blob: 8e56bfc8d8984412f845b02814d121d410f22b83 [file] [log] [blame]
/********************************************************************************
* Copyright (c) 2015-2019 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
********************************************************************************/
package org.eclipse.mdm.businessobjects.control;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
import java.util.Arrays;
import java.util.List;
import org.eclipse.mdm.api.base.adapter.EntityType;
import org.eclipse.mdm.api.base.model.Value;
import org.eclipse.mdm.api.base.model.ValueType;
import org.eclipse.mdm.api.base.query.Filter;
import org.eclipse.mdm.query.boundary.QueryServiceTest;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
public class FilterParserTest {
@Test
public void testParseFilterString() throws Exception {
EntityType test = QueryServiceTest.mockEntity("env2", "Test");
EntityType pool = QueryServiceTest.mockEntity("env2", "Pool");
when(test.getAttribute("Name").createValue(eq(""), any())).thenAnswer(new Answer<Value>() {
@Override
public Value answer(InvocationOnMock invocation) throws Throwable {
return ValueType.STRING.create("env2", invocation.getArgument(0), true, invocation.getArgument(1));
}
});
List<EntityType> possibleEntityTypes = Arrays.asList(test, pool);
Filter filter = FilterParser.parseFilterString(possibleEntityTypes, "Test.Name lk \"With\\\"quote\\\"\"");
assertThat(filter).isEqualTo(Filter.and().name(test, "With\"quote\""));
Filter filter2 = FilterParser.parseFilterString(possibleEntityTypes, "Test.Name lk 'With\"quote\"'");
assertThat(filter2).isEqualTo(Filter.and().name(test, "With\"quote\""));
Filter filter3 = FilterParser.parseFilterString(possibleEntityTypes, "Test.Name lk 'With\\'quote\\''");
assertThat(filter3).isEqualTo(Filter.and().name(test, "With'quote'"));
Filter filter4 = FilterParser.parseFilterString(possibleEntityTypes, "Test.Name lk \"With'quote'\"");
assertThat(filter4).isEqualTo(Filter.and().name(test, "With'quote'"));
}
}