summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-11-07 14:14:44 +0100
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-11-07 14:14:44 +0100
commit659c4440918e2e1c68cf388e9d9c7eb3e83eb4d7 (patch)
tree66b7d30a2652e4ec17d98478afa88819145ab42d /src
parent5b3884e1850050dcf2c6928b5ee55b65ef6d989e (diff)
Adds more unit tests.
Diffstat (limited to 'src')
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/Cast.java80
1 files changed, 34 insertions, 46 deletions
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/Cast.java b/src/core/src/tonkadur/fate/v1/lang/computation/Cast.java
index 3906499..8e283c9 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/Cast.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/Cast.java
@@ -3,6 +3,7 @@ package tonkadur.fate.v1.lang.computation;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -24,55 +25,41 @@ public class Cast extends Computation
static
{
+ Set allowed_targets;
+
allowed_type_changes = new HashMap<Type,Set<Type>>();
- allowed_type_changes.put
- (
- Type.INT,
- Type.NUMBER_TYPES
- );
+ /** INT to ... **********************************************************/
+ allowed_targets = new HashSet<Type>();
+ allowed_targets.add(Type.FLOAT);
+ allowed_targets.add(Type.INT);
+ allowed_targets.add(Type.STRING);
- allowed_type_changes.put
- (
- Type.FLOAT,
- Type.NUMBER_TYPES
- );
+ allowed_type_changes.put(Type.INT, allowed_targets);
- allowed_type_changes.put
- (
- Type.DICT,
- Collections.emptySet()
- );
+ /** FLOAT to ... ********************************************************/
+ allowed_targets = new HashSet<Type>();
+ allowed_targets.add(Type.FLOAT);
+ allowed_targets.add(Type.INT);
+ allowed_targets.add(Type.STRING);
- allowed_type_changes.put
- (
- Type.SET,
- Collections.emptySet()
- );
+ allowed_type_changes.put(Type.FLOAT, allowed_targets);
- allowed_type_changes.put
- (
- Type.LIST,
- Collections.emptySet()
- );
+ /** BOOL to ... *********************************************************/
+ allowed_targets = new HashSet<Type>();
+ allowed_targets.add(Type.BOOL);
+ allowed_targets.add(Type.STRING);
- allowed_type_changes.put
- (
- Type.BOOL,
- Collections.emptySet()
- );
+ allowed_type_changes.put(Type.BOOL, allowed_targets);
- allowed_type_changes.put
- (
- Type.ANY,
- Collections.singleton(Type.ANY)
- );
+ /** BOOL to ... *********************************************************/
+ allowed_targets = new HashSet<Type>();
+ allowed_targets.add(Type.BOOL);
+ allowed_targets.add(Type.INT);
+ allowed_targets.add(Type.FLOAT);
+ allowed_targets.add(Type.STRING);
- allowed_type_changes.put
- (
- Type.STRING,
- Type.COMPARABLE_TYPES
- );
+ allowed_type_changes.put(Type.STRING, allowed_targets);
}
public static Collection<Type> get_allowed_casts_to (final Type t)
@@ -125,14 +112,15 @@ public class Cast extends Computation
(value.get_type().can_be_used_as(to))
||
(
- (to.is_base_type())
- &&
+ allowed_type_changes.containsKey
(
- allowed_type_changes.get(to).contains
- (
- value.get_type().get_act_as_type()
- )
+ value.get_type().get_act_as_type().get_base_type()
)
+ &&
+ allowed_type_changes.get
+ (
+ value.get_type().get_act_as_type().get_base_type()
+ ).contains(to.get_act_as_type())
)
)
{