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;
}
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);
}
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);
}
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);
}
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);
}
Aggregations