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

leeonky / test-charm-java / 239

29 Apr 2025 03:10PM UTC coverage: 74.224% (+0.09%) from 74.134%
239

push

circleci

leeonky
Fill in

1 of 1 new or added line in 1 file covered. (100.0%)

5 existing lines in 2 files now uncovered.

8063 of 10863 relevant lines covered (74.22%)

0.74 hits per line

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

96.88
/DAL-java/src/main/java/com/github/leeonky/dal/extensions/MetaProperties.java
1
package com.github.leeonky.dal.extensions;
2

3
import com.github.leeonky.dal.DAL;
4
import com.github.leeonky.dal.ast.opt.DALOperator;
5
import com.github.leeonky.dal.runtime.*;
6
import com.github.leeonky.dal.runtime.RuntimeContextBuilder.DALRuntimeContext;
7
import com.github.leeonky.dal.runtime.checker.Checker;
8
import com.github.leeonky.dal.runtime.checker.CheckingContext;
9
import com.github.leeonky.util.BeanClass;
10
import com.github.leeonky.util.NoSuchAccessorException;
11
import com.github.leeonky.util.Sneaky;
12

13
import java.util.Set;
14

15
import static com.github.leeonky.dal.runtime.DalException.extractException;
16
import static com.github.leeonky.dal.runtime.Order.BUILD_IN;
17

18
@Order(BUILD_IN)
19
public class MetaProperties implements Extension {
1✔
20
    private static Object size(MetaData<?> metaData) {
21
        return metaData.data().list().size();
1✔
22
    }
23

24
    private static Object throw_(MetaData<?> metaData) {
25
        try {
26
            metaData.data().value();
1✔
27
            throw new AssertionError("Expecting an error to be thrown, but nothing was thrown");
1✔
28
        } catch (Exception e) {
1✔
29
            return Sneaky.get(() -> extractException(e).orElseThrow(() -> e));
1✔
30
        }
31
    }
32

33
    private static Object object_(MetaData<?> metaData) {
34
        return metaData.data().value() == null ? null : new OriginalJavaObject(metaData.data());
1✔
35
    }
36

37
    private static Object keys(MetaData<?> metaData) {
38
        return metaData.data().fieldNames();
1✔
39
    }
40

41
    @Override
42
    public void extend(DAL dal) {
43
        dal.getRuntimeContextBuilder()
1✔
44
                .registerMetaProperty("size", MetaProperties::size)
1✔
45
                .registerMetaProperty("throw", MetaProperties::throw_)
1✔
46
                .registerMetaProperty("object", MetaProperties::object_)
1✔
47
                .registerMetaProperty("keys", MetaProperties::keys)
1✔
48
                .registerMetaProperty("should", MetaShould::new)
1✔
49
        ;
50

51
        dal.getRuntimeContextBuilder().checkerSetForMatching()
1✔
52
                .register((expected, actual) -> actual.cast(MetaShould.PredicateMethod.class).map(curryingMethod -> new Checker() {
1✔
53
                    @Override
54
                    public boolean failed(CheckingContext checkingContext) {
55
                        return !curryingMethod.should(expected.value());
1✔
56
                    }
57

58
                    @Override
59
                    public String message(CheckingContext checkingContext) {
60
                        return curryingMethod.errorMessage(expected);
1✔
61
                    }
62
                }))
63
                .register((expected, actual) -> actual.cast(CurryingMethod.class).map(curryingMethod -> new Checker() {
1✔
64
                    @Override
65
                    public Data<?> verify(Data<?> expected, Data<?> actual, DALRuntimeContext context) {
66
                        return actual.property(expected.value());
1✔
67
                    }
68
                }))
69
        ;
70

71
        dal.getRuntimeContextBuilder().registerOperator(com.github.leeonky.dal.runtime.Operators.MATCH, new Operation<CurryingMethod, ExpectationFactory>() {
1✔
72

73
            @Override
74
            public boolean match(Data<?> v1, DALOperator operator, Data<?> v2, DALRuntimeContext context) {
75
                return v1.instanceOf(CurryingMethod.class) && v2.instanceOf(ExpectationFactory.class);
1✔
76
            }
77

78
            @Override
79
            public Data<?> operateData(Data<CurryingMethod> v1, DALOperator operator, Data<ExpectationFactory> v2, DALRuntimeContext context) {
80
                return v2.value().create(operator, v1).matches();
1✔
81
            }
82
        });
83
    }
1✔
84

85
    static class OriginalJavaObject implements ProxyObject {
86
        private final Data<?> data;
87

88
        public OriginalJavaObject(Data<?> data) {
1✔
89
            this.data = data;
1✔
90
        }
1✔
91

92
        @Override
93
        public Object getValue(Object property) {
94
            try {
95
                Object instance = data.value();
1✔
96
                return BeanClass.createFrom(instance).getPropertyValue(instance, property.toString());
1✔
97
            } catch (NoSuchAccessorException ignore) {
1✔
98
                return data.property(property).value();
1✔
99
            }
100
        }
101

102
        @Override
103
        public Set<?> getPropertyNames() {
UNCOV
104
            return BeanClass.createFrom(data.value()).getPropertyReaders().keySet();
×
105
        }
106
    }
107
}
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