added test
This commit is contained in:
		
							parent
							
								
									bb570add28
								
							
						
					
					
						commit
						916dc6cb6e
					
				@ -61,7 +61,8 @@ public class SimpleCalculatedFieldState extends BaseCalculatedFieldState {
 | 
			
		||||
                double value = switch (kvEntry.getDataType()) {
 | 
			
		||||
                    case LONG -> kvEntry.getLongValue().map(Long::doubleValue).orElseThrow();
 | 
			
		||||
                    case DOUBLE -> kvEntry.getDoubleValue().orElseThrow();
 | 
			
		||||
                    case BOOLEAN, STRING, JSON -> Double.parseDouble(kvEntry.getValueAsString());
 | 
			
		||||
                    case BOOLEAN -> kvEntry.getBooleanValue().map(b -> b ? 1.0 : 0.0).orElseThrow();
 | 
			
		||||
                    case STRING, JSON -> Double.parseDouble(kvEntry.getValueAsString());
 | 
			
		||||
                };
 | 
			
		||||
                expr.setVariable(entry.getKey(), value);
 | 
			
		||||
            } catch (NumberFormatException e) {
 | 
			
		||||
 | 
			
		||||
@ -34,6 +34,7 @@ import org.thingsboard.server.common.data.cf.configuration.SimpleCalculatedField
 | 
			
		||||
import org.thingsboard.server.common.data.id.AssetId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.DeviceId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.BooleanDataEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.DoubleDataEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.LongDataEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.StringDataEntry;
 | 
			
		||||
@ -143,7 +144,7 @@ public class SimpleCalculatedFieldStateTest {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void testPerformCalculationWhenPassedNotNumber() {
 | 
			
		||||
    void testPerformCalculationWhenPassedString() {
 | 
			
		||||
        state.arguments = new HashMap<>(Map.of(
 | 
			
		||||
                "key1", key1ArgEntry,
 | 
			
		||||
                "key2", new SingleValueArgumentEntry(System.currentTimeMillis() - 9, new StringDataEntry("key2", "string"), 124L),
 | 
			
		||||
@ -155,6 +156,23 @@ public class SimpleCalculatedFieldStateTest {
 | 
			
		||||
                .hasMessage("Argument 'key2' is not a number.");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void testPerformCalculationWhenPassedBoolean() throws ExecutionException, InterruptedException {
 | 
			
		||||
        state.arguments = new HashMap<>(Map.of(
 | 
			
		||||
                "key1", key1ArgEntry,
 | 
			
		||||
                "key2", new SingleValueArgumentEntry(System.currentTimeMillis() - 9, new BooleanDataEntry("key2", true), 124L),// true is parsed as 1
 | 
			
		||||
                "key3", key3ArgEntry
 | 
			
		||||
        ));
 | 
			
		||||
 | 
			
		||||
        CalculatedFieldResult result = state.performCalculation(ctx).get();
 | 
			
		||||
 | 
			
		||||
        assertThat(result).isNotNull();
 | 
			
		||||
        Output output = getCalculatedFieldConfig().getOutput();
 | 
			
		||||
        assertThat(result.getType()).isEqualTo(output.getType());
 | 
			
		||||
        assertThat(result.getScope()).isEqualTo(output.getScope());
 | 
			
		||||
        assertThat(result.getResult()).isEqualTo(JacksonUtil.valueToTree(Map.of("output", 35)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void testPerformCalculationWhenDecimalsByDefault() throws ExecutionException, InterruptedException {
 | 
			
		||||
        state.arguments = new HashMap<>(Map.of(
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user