• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

CyclopsMC / IntegratedDynamics / 14549182042

19 Apr 2025 12:35PM UTC coverage: 42.579% (+0.004%) from 42.575%
14549182042

push

github

rubensworks
Fix wrench not removing cables after using off-hand item, Closes #1504

2310 of 8383 branches covered (27.56%)

Branch coverage included in aggregate %.

11021 of 22926 relevant lines covered (48.07%)

2.26 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

77.36
/src/main/java/org/cyclops/integrateddynamics/gametest/GameTestHelpersIntegratedDynamics.java
1
package org.cyclops.integrateddynamics.gametest;
2

3
import net.minecraft.gametest.framework.GameTestAssertException;
4
import net.minecraft.world.item.ItemStack;
5
import net.minecraft.world.level.Level;
6
import org.apache.commons.lang3.tuple.Pair;
7
import org.cyclops.integrateddynamics.IntegratedDynamics;
8
import org.cyclops.integrateddynamics.RegistryEntries;
9
import org.cyclops.integrateddynamics.api.evaluate.EvaluationException;
10
import org.cyclops.integrateddynamics.api.evaluate.operator.IOperator;
11
import org.cyclops.integrateddynamics.api.evaluate.variable.IValue;
12
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueType;
13
import org.cyclops.integrateddynamics.api.evaluate.variable.IVariable;
14
import org.cyclops.integrateddynamics.api.evaluate.variable.ValueDeseralizationContext;
15
import org.cyclops.integrateddynamics.api.item.IAspectVariableFacade;
16
import org.cyclops.integrateddynamics.api.item.IVariableFacade;
17
import org.cyclops.integrateddynamics.api.item.IVariableFacadeHandlerRegistry;
18
import org.cyclops.integrateddynamics.api.part.IPartState;
19
import org.cyclops.integrateddynamics.api.part.PartPos;
20
import org.cyclops.integrateddynamics.api.part.PartTarget;
21
import org.cyclops.integrateddynamics.api.part.aspect.IAspect;
22
import org.cyclops.integrateddynamics.api.part.aspect.IAspectWrite;
23
import org.cyclops.integrateddynamics.api.part.write.IPartStateWriter;
24
import org.cyclops.integrateddynamics.api.part.write.IPartTypeWriter;
25
import org.cyclops.integrateddynamics.core.evaluate.operator.Operators;
26
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypes;
27
import org.cyclops.integrateddynamics.core.helper.PartHelpers;
28
import org.cyclops.integrateddynamics.core.item.AspectVariableFacade;
29
import org.cyclops.integrateddynamics.core.logicprogrammer.OperatorLPElement;
30
import org.cyclops.integrateddynamics.core.logicprogrammer.ValueTypeLPElementBase;
31
import org.cyclops.integrateddynamics.part.PartTypePanelDisplay;
32
import org.cyclops.integrateddynamics.part.aspect.Aspects;
33

34
import javax.annotation.Nullable;
35
import java.util.Objects;
36

37
/**
38
 * @author rubensworks
39
 */
40
public class GameTestHelpersIntegratedDynamics {
×
41

42
    public static void assertValueEqual(IValue value1, IValue value2) {
43
        if (!Objects.equals(value1, value2)) {
4✔
44
            throw new GameTestAssertException(String.format("Value %s does not equal value %s", value1, value2));
16✔
45
        }
46
    }
1✔
47

48
    public static void assertValueEqual(@Nullable IVariable value1, IValue value2) {
49
        if (value1 == null) {
2!
50
            throw new GameTestAssertException("Variable is null");
×
51
        }
52
        try {
53
            assertValueEqual(value1.getValue(), value2);
4✔
54
        } catch (EvaluationException e) {
×
55
            throw new GameTestAssertException(e.getMessage());
×
56
        }
1✔
57
    }
1✔
58

59
    public static ItemStack createVariableForValue(Level level, IValueType valueType, IValue value) {
60
        IVariableFacadeHandlerRegistry registry = IntegratedDynamics._instance.getRegistryManager().getRegistry(IVariableFacadeHandlerRegistry.class);
×
61
        ItemStack itemStack = new ItemStack(RegistryEntries.ITEM_VARIABLE);
×
62
        return registry.writeVariableFacadeItem(true, itemStack, ValueTypes.REGISTRY,
×
63
                new ValueTypeLPElementBase.ValueTypeVariableFacadeFactory(valueType, value), level, null, RegistryEntries.BLOCK_LOGIC_PROGRAMMER.get().defaultBlockState());
×
64
    }
65

66
    public static ItemStack createVariableForOperator(Level level, IOperator operator, int[] variableIds) {
67
        IVariableFacadeHandlerRegistry registry = IntegratedDynamics._instance.getRegistryManager().getRegistry(IVariableFacadeHandlerRegistry.class);
6✔
68
        ItemStack itemStack = new ItemStack(RegistryEntries.ITEM_VARIABLE);
5✔
69
        return registry.writeVariableFacadeItem(true, itemStack, Operators.REGISTRY,
14✔
70
                new OperatorLPElement.OperatorVariableFacadeFactory(operator, variableIds), level, null, RegistryEntries.BLOCK_LOGIC_PROGRAMMER.get().defaultBlockState());
3✔
71
    }
72

73
    public static IVariableFacade getVariableFacade(Level level, ItemStack itemStack) {
74
        return RegistryEntries.ITEM_VARIABLE.get().getVariableFacade(ValueDeseralizationContext.of(level), itemStack);
8✔
75
    }
76

77
    public static ItemStack createVariableFromReader(Level level, PartPos partPos, final IAspect aspect) {
78
        return createVariableFromReader(level, aspect, PartHelpers.getPart(partPos).getState());
7✔
79
    }
80

81
    public static ItemStack createVariableFromReader(Level level, final IAspect aspect, IPartState partState) {
82
        IVariableFacadeHandlerRegistry registry = IntegratedDynamics._instance.getRegistryManager().getRegistry(IVariableFacadeHandlerRegistry.class);
6✔
83
        ItemStack itemStack = new ItemStack(RegistryEntries.ITEM_VARIABLE);
5✔
84
        return registry.writeVariableFacadeItem(true, itemStack, Aspects.REGISTRY, new IVariableFacadeHandlerRegistry.IVariableFacadeFactory<>() {
23✔
85
            @Override
86
            public IAspectVariableFacade create(boolean generateId) {
87
                return new AspectVariableFacade(generateId, partState.getId(), aspect);
10✔
88
            }
89

90
            @Override
91
            public IAspectVariableFacade create(int id) {
92
                return new AspectVariableFacade(id, partState.getId(), aspect);
×
93
            }
94
        }, level, null, null);
95
    }
96

97
    public static void placeVariableInWriter(Level level, PartPos partPos, final IAspectWrite<?, ?> aspect, ItemStack variableAspect) {
98
        PartHelpers.PartStateHolder<?, ?> partStateHolder = PartHelpers.getPart(partPos);
3✔
99
        IPartTypeWriter<?, ?> part = (IPartTypeWriter<?, ?>) partStateHolder.getPart();
4✔
100
        IPartStateWriter<?> state = (IPartStateWriter<?>) partStateHolder.getState();
4✔
101

102
        // Find aspect index
103
        int aspectIndex = -1;
2✔
104
        for (int i = 0; i < part.getWriteAspects().size(); i++) {
9✔
105
            if (part.getWriteAspects().get(i) == aspect) {
6✔
106
                aspectIndex = i;
2✔
107
            }
108
        }
109
        if (aspectIndex < 0) {
2!
110
            throw new GameTestAssertException("Aspect " + aspect + " not found");
×
111
        }
112

113
        // Insert variable
114
        state.getInventory().setItem(aspectIndex, variableAspect);
5✔
115

116
        // Activate aspect
117
        ((IPartTypeWriter) part).updateActivation(PartTarget.fromCenter(partPos), state, null);
6✔
118
    }
1✔
119

120
    public static Pair<PartTypePanelDisplay, PartTypePanelDisplay.State> placeVariableInDisplayPanel(Level level, PartPos partPos, ItemStack variableAspect) {
121
        PartHelpers.PartStateHolder<?, ?> partStateHolder = PartHelpers.getPart(partPos);
3✔
122
        PartTypePanelDisplay part = (PartTypePanelDisplay) partStateHolder.getPart();
4✔
123
        PartTypePanelDisplay.State state = (PartTypePanelDisplay.State) partStateHolder.getState();
4✔
124

125
        // Insert variable
126
        state.getInventory().setItem(0, variableAspect);
5✔
127

128
        return Pair.of(part, state);
4✔
129
    }
130

131
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc