SelectorName replacement = rewrittenSelectors.get(operation.selectorName()); if (replacement == null) return operand; return new Cast(replaceReferencesToRemovedSource(context, operation.getOperand(), rewrittenSelectors), operation.getDesiredTypeName());
SelectorName replacement = rewrittenSelectors.get(operation.selectorName()); if (replacement == null) return operand; return new Cast(replaceReferencesToRemovedSource(context, operation.getOperand(), rewrittenSelectors), operation.getDesiredTypeName());
@Test @FixFor( "MODE-2166" ) public void shouldParseDynamicOperandFromStringContainingCast() { DynamicOperand operand = parser.parseDynamicOperand(tokens("CAST(tableA.property AS DOUBLE)"), typeSystem, mock(Source.class)); assertThat(operand, is(instanceOf(Cast.class))); Cast cast = (Cast)operand; assertThat(cast.selectorName(), is(selectorName("tableA"))); assertThat(cast.getOperand(), is(instanceOf(PropertyValue.class))); PropertyValue value = (PropertyValue)cast.getOperand(); assertThat(value.getPropertyName(), is("property")); assertThat(value.selectorName(), is(selectorName("tableA"))); assertEquals(PropertyType.DOUBLE.toString(), cast.getDesiredTypeName()); }
@Test @FixFor( "MODE-2166" ) public void shouldParseDynamicOperandFromStringContainingCastOfLowerCaseOfAnotherOperand() { DynamicOperand operand = parser.parseDynamicOperand(tokens("CAST(LOWER(tableA.property) AS DATE)"), typeSystem, mock(Source.class)); assertThat(operand, is(instanceOf(Cast.class))); Cast cast = (Cast)operand; assertThat(cast.selectorName(), is(selectorName("tableA"))); assertThat(cast.getOperand(), is(instanceOf(LowerCase.class))); assertEquals(PropertyType.DATE.toString(), cast.getDesiredTypeName()); LowerCase lower = (LowerCase)cast.getOperand(); assertThat(lower.selectorName(), is(selectorName("tableA"))); assertThat(lower.getOperand(), is(instanceOf(PropertyValue.class))); PropertyValue value = (PropertyValue)lower.getOperand(); assertThat(value.getPropertyName(), is("property")); assertThat(value.selectorName(), is(selectorName("tableA"))); }