Search in sources :

Example 66 with BFloat

use of org.ballerinalang.model.values.BFloat in project ballerina by ballerina-lang.

the class MethodListener method generateRequestStruct.

private BValue generateRequestStruct(Message request, ProgramFile programFile, String fieldName, BType structType) {
    BValue bValue = null;
    int stringIndex = 0;
    int intIndex = 0;
    int floatIndex = 0;
    int boolIndex = 0;
    int refIndex = 0;
    if (structType instanceof BStructType) {
        BStruct requestStruct = BLangConnectorSPIUtil.createBStruct(programFile, structType.getPackagePath(), structType.getName());
        for (BStructType.StructField structField : ((BStructType) structType).getStructFields()) {
            String structFieldName = structField.getFieldName();
            if (structField.getFieldType() instanceof BRefType) {
                BType bType = structField.getFieldType();
                if (MessageRegistry.getInstance().getMessageDescriptorMap().containsKey(bType.getName())) {
                    Message message = (Message) request.getFields().get(structFieldName);
                    requestStruct.setRefField(refIndex++, (BRefType) generateRequestStruct(message, programFile, structFieldName, structField.getFieldType()));
                }
            } else {
                if (request.getFields().containsKey(structFieldName)) {
                    String fieldType = structField.getFieldType().getName();
                    switch(fieldType) {
                        case STRING:
                            {
                                requestStruct.setStringField(stringIndex++, (String) request.getFields().get(structFieldName));
                                break;
                            }
                        case INT:
                            {
                                requestStruct.setIntField(intIndex++, (Long) request.getFields().get(structFieldName));
                                break;
                            }
                        case FLOAT:
                            {
                                Float value = (Float) request.getFields().get(structFieldName);
                                if (value != null) {
                                    requestStruct.setFloatField(floatIndex++, Double.parseDouble(value.toString()));
                                }
                                break;
                            }
                        case DOUBLE:
                            {
                                Double value = (Double) request.getFields().get(structFieldName);
                                if (value != null) {
                                    requestStruct.setFloatField(floatIndex++, Double.parseDouble(value.toString()));
                                }
                                break;
                            }
                        case BOOLEAN:
                            {
                                requestStruct.setBooleanField(boolIndex++, (Integer) request.getFields().get(structFieldName));
                                break;
                            }
                        default:
                            {
                                throw new UnsupportedFieldTypeException("Error while generating request struct. Field" + " type is not supported : " + fieldType);
                            }
                    }
                }
            }
        }
        bValue = requestStruct;
    } else {
        Map<String, Object> fields = request.getFields();
        if (fields.size() == 1 && fields.containsKey("value")) {
            fieldName = "value";
        }
        if (fields.containsKey(fieldName)) {
            String fieldType = structType.getName();
            switch(fieldType) {
                case STRING:
                    {
                        bValue = new BString((String) fields.get(fieldName));
                        break;
                    }
                case INT:
                    {
                        bValue = new BInteger((Long) fields.get(fieldName));
                        break;
                    }
                case FLOAT:
                    {
                        Float value = (Float) fields.get(fieldName);
                        if (value != null) {
                            bValue = new BFloat(Double.parseDouble(value.toString()));
                        }
                        break;
                    }
                case DOUBLE:
                    {
                        Double value = (Double) fields.get(fieldName);
                        if (value != null) {
                            bValue = new BFloat(Double.parseDouble(value.toString()));
                        }
                        break;
                    }
                case BOOLEAN:
                    {
                        bValue = new BBoolean((Boolean) fields.get(fieldName));
                        break;
                    }
                default:
                    {
                        throw new UnsupportedFieldTypeException("Error while generating request struct. Field " + "type is not supported : " + fieldType);
                    }
            }
        }
    }
    return bValue;
}
Also used : BRefType(org.ballerinalang.model.values.BRefType) BStruct(org.ballerinalang.model.values.BStruct) Message(org.ballerinalang.net.grpc.Message) BValue(org.ballerinalang.model.values.BValue) BString(org.ballerinalang.model.values.BString) BInteger(org.ballerinalang.model.values.BInteger) BBoolean(org.ballerinalang.model.values.BBoolean) UnsupportedFieldTypeException(org.ballerinalang.net.grpc.exception.UnsupportedFieldTypeException) BString(org.ballerinalang.model.values.BString) BStructType(org.ballerinalang.model.types.BStructType) BInteger(org.ballerinalang.model.values.BInteger) BFloat(org.ballerinalang.model.values.BFloat) BType(org.ballerinalang.model.types.BType) BFloat(org.ballerinalang.model.values.BFloat)

Example 67 with BFloat

use of org.ballerinalang.model.values.BFloat in project ballerina by ballerina-lang.

the class TestOptionalArgsInNativeFunc method execute.

@Override
public void execute(Context ctx) {
    long a;
    double b;
    String c;
    long d;
    String e;
    BIntArray z;
    try {
        a = ctx.getIntArgument(0);
        b = ctx.getFloatArgument(0);
        c = ctx.getStringArgument(0);
        d = ctx.getIntArgument(1);
        e = ctx.getStringArgument(1);
        z = (BIntArray) ctx.getRefArgument(0);
    } catch (Throwable t) {
        throw new BallerinaException("Mocked function failed: " + t.getMessage());
    }
    // Setting output value.
    ctx.setReturnValues(new BInteger(a), new BFloat(b), new BString(c), new BInteger(d), new BString(e), z);
}
Also used : BString(org.ballerinalang.model.values.BString) BInteger(org.ballerinalang.model.values.BInteger) BFloat(org.ballerinalang.model.values.BFloat) BString(org.ballerinalang.model.values.BString) BallerinaException(org.ballerinalang.util.exceptions.BallerinaException) BIntArray(org.ballerinalang.model.values.BIntArray)

Example 68 with BFloat

use of org.ballerinalang.model.values.BFloat in project ballerina by ballerina-lang.

the class VariableDefinitionTest method testUpdateDefaultValue.

@Test
public void testUpdateDefaultValue() {
    int v1 = 56;
    boolean v3 = false;
    String v4 = "newstr";
    double v5 = 68.3325f;
    BValue[] args = { new BInteger(v1), new BBoolean(v3), new BString(v4), new BFloat(v5) };
    BValue[] returns = BRunUtil.invoke(result, "updateVarValue", args);
    Assert.assertEquals(returns.length, 4);
    Assert.assertSame(returns[0].getClass(), BInteger.class);
    long i = ((BInteger) returns[0]).intValue();
    Assert.assertEquals(i, v1);
    Assert.assertSame(returns[1].getClass(), BBoolean.class);
    boolean b = ((BBoolean) returns[1]).booleanValue();
    Assert.assertEquals(b, v3);
    Assert.assertSame(returns[2].getClass(), BString.class);
    String s = ((BString) returns[2]).stringValue();
    Assert.assertEquals(s, v4);
    Assert.assertSame(returns[3].getClass(), BFloat.class);
    double f = ((BFloat) returns[3]).floatValue();
    Assert.assertEquals(f, v5, DELTA);
}
Also used : BValue(org.ballerinalang.model.values.BValue) BString(org.ballerinalang.model.values.BString) BInteger(org.ballerinalang.model.values.BInteger) BBoolean(org.ballerinalang.model.values.BBoolean) BFloat(org.ballerinalang.model.values.BFloat) BString(org.ballerinalang.model.values.BString) Test(org.testng.annotations.Test)

Example 69 with BFloat

use of org.ballerinalang.model.values.BFloat in project ballerina by ballerina-lang.

the class VariableDefinitionTest method testVariableDefaultValue.

@Test
public void testVariableDefaultValue() {
    BValue[] returns = BRunUtil.invoke(result, "variableDefaultValue", new BValue[0]);
    Assert.assertEquals(returns.length, 4);
    Assert.assertSame(returns[0].getClass(), BInteger.class);
    long i = ((BInteger) returns[0]).intValue();
    Assert.assertEquals(i, 0);
    Assert.assertSame(returns[1].getClass(), BBoolean.class);
    boolean b = ((BBoolean) returns[1]).booleanValue();
    Assert.assertEquals(b, false);
    Assert.assertSame(returns[2].getClass(), BString.class);
    String s = returns[2].stringValue();
    Assert.assertEquals(s, "");
    Assert.assertSame(returns[3].getClass(), BFloat.class);
    double f = ((BFloat) returns[3]).floatValue();
    Assert.assertEquals(f, 0.0f, DELTA);
}
Also used : BValue(org.ballerinalang.model.values.BValue) BInteger(org.ballerinalang.model.values.BInteger) BBoolean(org.ballerinalang.model.values.BBoolean) BFloat(org.ballerinalang.model.values.BFloat) BString(org.ballerinalang.model.values.BString) Test(org.testng.annotations.Test)

Example 70 with BFloat

use of org.ballerinalang.model.values.BFloat in project ballerina by ballerina-lang.

the class AssignStmtTest method invokeAssignmentTest.

@Test
public void invokeAssignmentTest() {
    BValue[] args = { new BInteger(100) };
    BValue[] returns = BRunUtil.invoke(result, "testIntAssignStmt", args);
    Assert.assertEquals(returns.length, 1);
    Assert.assertSame(returns[0].getClass(), BInteger.class);
    long actual = ((BInteger) returns[0]).intValue();
    long expected = 100;
    Assert.assertEquals(actual, expected);
    // floattype assignment test
    args = new BValue[] { new BFloat(2.3f) };
    returns = BRunUtil.invoke(result, "testFloatAssignStmt", args);
    Assert.assertEquals(returns.length, 1);
    Assert.assertSame(returns[0].getClass(), BFloat.class);
    double actualFloat = ((BFloat) returns[0]).floatValue();
    double expectedFloat = 2.3f;
    Assert.assertEquals(actualFloat, expectedFloat);
    // Boolean assignment test
    args = new BValue[] { new BBoolean(true) };
    returns = BRunUtil.invoke(result, "testBooleanAssignStmt", args);
    Assert.assertEquals(returns.length, 1);
    Assert.assertSame(returns[0].getClass(), BBoolean.class);
    boolean actualBoolean = ((BBoolean) returns[0]).booleanValue();
    Assert.assertEquals(actualBoolean, true);
    // String assignment test
    args = new BValue[] { new BString("Test Value") };
    returns = BRunUtil.invoke(result, "testStringAssignStmt", args);
    Assert.assertEquals(returns.length, 1);
    Assert.assertSame(returns[0].getClass(), BString.class);
    String actualString = returns[0].stringValue();
    String expectedString = "Test Value";
    Assert.assertEquals(actualString, expectedString);
    // Array index to int assignment test
    BIntArray arrayValue = new BIntArray();
    arrayValue.add(0, 150);
    args = new BValue[] { arrayValue };
    returns = BRunUtil.invoke(result, "testArrayIndexToIntAssignStmt", args);
    Assert.assertEquals(returns.length, 1);
    Assert.assertSame(returns[0].getClass(), BInteger.class);
    actual = ((BInteger) returns[0]).intValue();
    expected = 150;
    Assert.assertEquals(actual, expected);
    // Int to array index assignment test
    args = new BValue[] { new BInteger(250) };
    returns = BRunUtil.invoke(result, "testIntToArrayAssignStmt", args);
    Assert.assertEquals(returns.length, 1);
    Assert.assertSame(returns[0].getClass(), BInteger.class);
    actual = ((BInteger) returns[0]).intValue();
    expected = 250;
    Assert.assertEquals(actual, expected);
}
Also used : BValue(org.ballerinalang.model.values.BValue) BString(org.ballerinalang.model.values.BString) BInteger(org.ballerinalang.model.values.BInteger) BFloat(org.ballerinalang.model.values.BFloat) BBoolean(org.ballerinalang.model.values.BBoolean) BString(org.ballerinalang.model.values.BString) BIntArray(org.ballerinalang.model.values.BIntArray) Test(org.testng.annotations.Test)

Aggregations

BFloat (org.ballerinalang.model.values.BFloat)158 BValue (org.ballerinalang.model.values.BValue)119 Test (org.testng.annotations.Test)107 BInteger (org.ballerinalang.model.values.BInteger)55 BString (org.ballerinalang.model.values.BString)41 BBoolean (org.ballerinalang.model.values.BBoolean)21 BRefType (org.ballerinalang.model.values.BRefType)7 BStruct (org.ballerinalang.model.values.BStruct)7 BType (org.ballerinalang.model.types.BType)6 BBlob (org.ballerinalang.model.values.BBlob)6 BStringArray (org.ballerinalang.model.values.BStringArray)5 BStructType (org.ballerinalang.model.types.BStructType)4 BIntArray (org.ballerinalang.model.values.BIntArray)4 UnsupportedFieldTypeException (org.ballerinalang.net.grpc.exception.UnsupportedFieldTypeException)4 BallerinaException (org.ballerinalang.util.exceptions.BallerinaException)4 BJSON (org.ballerinalang.model.values.BJSON)3 CompileResult (org.ballerinalang.launcher.util.CompileResult)2 BMap (org.ballerinalang.model.values.BMap)2 BRefValueArray (org.ballerinalang.model.values.BRefValueArray)2 Message (org.ballerinalang.net.grpc.Message)2