X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.pythonlink%2Ftest%2Forg%2Fsimantics%2Fpythonlink%2Ftest%2Fscripts%2FVariant.sts;h=9f10d01a2a263e3cd5f38123ce5ca18198830633;hb=10559bc8ca8629c260c917c052ed15e78281e480;hp=745b3c3aea056a3a7b28aac64df5b3a15bd131c4;hpb=15304b7c3168ef89c47dcfcfb4cf34c72000a75f;p=simantics%2Fpython.git diff --git a/org.simantics.pythonlink/test/org/simantics/pythonlink/test/scripts/Variant.sts b/org.simantics.pythonlink/test/org/simantics/pythonlink/test/scripts/Variant.sts index 745b3c3..9f10d01 100644 --- a/org.simantics.pythonlink/test/org/simantics/pythonlink/test/scripts/Variant.sts +++ b/org.simantics.pythonlink/test/org/simantics/pythonlink/test/scripts/Variant.sts @@ -1,5 +1,33 @@ > import "Python" > a = variant ([1.0, 2.0, 3.0]) +> a +[1.0, 2.0, 3.0] : Double[] +> variantDatatype a +Double[] +> matchDatatype DoubleType = "Double" +> matchDatatype (ArrayType t) = matchDatatype t + "[]" +> matchDatatype (variantDatatype a) +"Double[]" +> getVariantAsNumber var = match variantDatatype var with +> BooleanType -> if variantValue var then 1.0 else 0.0 +> ByteType -> coerce (coerce (variantValue var :: Byte) :: Integer) +> IntegerType -> coerce (variantValue var :: Integer) +> LongType -> coerce (variantValue var :: Long) +> FloatType -> coerce (variantValue var :: Float) +> DoubleType -> variantValue var :: Double +> StringType -> coerce (variantValue var :: String) +> OptionalType t -> getVariantAsNumber (variantComponent var componentReference) +> otherwise -> fail "Variant \(var) is not a number" +> getVariantAsNumber (variant True) +1.0 +> getVariantAsNumber (variant (2 :: Byte)) +2.0 +> getVariantAsNumber (variant (456 :: Integer)) +456.0 +> getVariantAsNumber (variant (Just 2.5 :: Maybe Double)) +2.5 +> getVariantAsNumber (variant "23.7") +23.7 > b = runPython do > setPythonVariantVariable "foo" a > executePythonStatement "foo.append(4.0)"