]> gerrit.simantics Code Review - simantics/python.git/blobdiff - org.simantics.pythonlink/test/org/simantics/pythonlink/test/scripts/Variant.sts
Addition of null value check to getPythonObject()
[simantics/python.git] / org.simantics.pythonlink / test / org / simantics / pythonlink / test / scripts / Variant.sts
index 745b3c3aea056a3a7b28aac64df5b3a15bd131c4..9f10d01a2a263e3cd5f38123ce5ca18198830633 100644 (file)
@@ -1,5 +1,33 @@
 > import "Python"\r
 > a = variant ([1.0, 2.0, 3.0])\r
+> a\r
+[1.0, 2.0, 3.0] : Double[]\r
+> variantDatatype a\r
+Double[]\r
+> matchDatatype DoubleType = "Double" \r
+> matchDatatype (ArrayType t) = matchDatatype t + "[]"\r
+> matchDatatype (variantDatatype a)\r
+"Double[]" \r
+> getVariantAsNumber var = match variantDatatype var with\r
+>    BooleanType -> if variantValue var then 1.0 else 0.0\r
+>    ByteType -> coerce (coerce (variantValue var :: Byte) :: Integer)\r
+>    IntegerType -> coerce (variantValue var :: Integer)\r
+>    LongType -> coerce (variantValue var :: Long)\r
+>    FloatType -> coerce (variantValue var :: Float)\r
+>    DoubleType -> variantValue var :: Double\r
+>    StringType -> coerce (variantValue var :: String)\r
+>    OptionalType t -> getVariantAsNumber (variantComponent var componentReference)\r
+>    otherwise -> fail "Variant \(var) is not a number"\r
+> getVariantAsNumber (variant True)\r
+1.0\r
+> getVariantAsNumber (variant (2 :: Byte))\r
+2.0\r
+> getVariantAsNumber (variant (456 :: Integer))\r
+456.0\r
+> getVariantAsNumber (variant (Just 2.5 :: Maybe Double))\r
+2.5\r
+> getVariantAsNumber (variant "23.7")\r
+23.7\r
 > b = runPython do\r
 >     setPythonVariantVariable "foo" a\r
 >     executePythonStatement "foo.append(4.0)"\r