This section details the current state of each language binding with respect to our standard compliance suite.
number | test | java (98.33%) | golang (78.33%) | Dotnet | Python |
---|---|---|---|---|---|
1 | asyncOverrides_overrideCallsSuper | 🟢 | 🔴 | ⭕ | ⭕ |
2 | [arrayReturnedByMethodCanBeRead]("Array created in the kernel can be queried for its elements") | 🟢 | 🟢 | ⭕ | ⭕ |
3 | [unionProperties]("Kernel values that accept a union type can be set, and are returned with the concrete type") | 🟢 | 🟢 | ⭕ | ⭕ |
4 | syncOverrides | 🟢 | 🟢 | ⭕ | ⭕ |
5 | [useEnumFromScopedModule]("Property that accepts an enum type from a third-party package can be set, and read") | 🟢 | 🟢 | ⭕ | ⭕ |
6 | [createObjectAndCtorOverloads]("Class can be instantiated with empty and non empty constructor") | 🟢 | ⚪ | ⭕ | ⭕ |
7 | fail_syncOverrides_callsDoubleAsync_method | 🟢 | 🟢 | ⭕ | ⭕ |
8 | collectionOfInterfaces_MapOfStructs | 🟢 | 🟢 | ⭕ | ⭕ |
9 | asyncOverrides_overrideAsyncMethod | 🟢 | 🔴 | ⭕ | ⭕ |
10 | [statics]("Static functions can be invoked and accept and return the correct type") | 🟢 | 🟢 | ⭕ | ⭕ |
11 | [structs_returnedLiteralEqualsNativeBuilt]("A struct returned from the kernel is not distinguishable from a struct created natively") | 🟢 | 🟢 | ⭕ | ⭕ |
12 | [classesCanSelfReferenceDuringClassInitialization]("Classes can reference other classes during initialization") | 🟢 | 🟢 | ⭕ | ⭕ |
13 | [canObtainStructReferenceWithOverloadedSetter]("A class with a settable property of a union type can be returned from the kernel") | 🟢 | 🟢 | ⭕ | ⭕ |
14 | [callbacksCorrectlyDeserializeArguments]("Runtime properly deserializes callback arguments from the kernel") | 🟢 | 🟢 | ⭕ | ⭕ |
15 | [canUseInterfaceSetters]("Read-write properties generate the corresponding setters in the target language") | 🟢 | 🟢 | ⭕ | ⭕ |
16 | [propertyOverrides_interfaces]("Target language can override properties of host interfaces") | 🟢 | 🟢 | ⭕ | ⭕ |
17 | syncOverrides_callsSuper | 🟢 | 🟢 | ⭕ | ⭕ |
18 | [testJsiiAgent]("Asserts the correct value of the JSII_AGENT env variable for the kernel process") | 🟢 | 🟢 | ⭕ | ⭕ |
19 | [doNotOverridePrivates_method_private]("Non public methods on the guest class do not override methods in the host class") | 🟢 | 🟢 | ⭕ | ⭕ |
20 | [pureInterfacesCanBeUsedTransparently]("Guest implementation of a pure host interface can be used by host consumers accepting that interface") | 🟢 | 🟢 | ⭕ | ⭕ |
21 | [nullShouldBeTreatedAsUndefined]("Null value of target language is treated as undefined by the host") | 🟢 | 🟢 | ⭕ | ⭕ |
22 | [primitiveTypes]("All Primitive types are set and read with their respective types") | 🟢 | 🟢 | ⭕ | ⭕ |
23 | [reservedKeywordsAreSlugifiedInClassProperties]("TS code that uses reserved words as class property names get slugified so it is usable in the target language") | 🟢 | ⚪ | ⭕ | ⭕ |
24 | [objectIdDoesNotGetReallocatedWhenTheConstructorPassesThisOut]("Ensure the JSII kernel can pass 'this' out to JSII remotes from within the constructor") | 🟢 | 🟢 | ⭕ | ⭕ |
25 | [interfaceBuilder]("Seems to be a duplicate of 'propertyOverrides_interfaces'?") | 🟢 | 🟢 | ⭕ | ⭕ |
26 | unionTypes | 🟢 | 🟢 | ⭕ | ⭕ |
27 | arrays | 🟢 | 🟢 | ⭕ | ⭕ |
28 | staticMapInClassCannotBeModified | 🟢 | ⚪ | ⭕ | ⭕ |
29 | consts | 🟢 | 🟢 | ⭕ | ⭕ |
30 | pureInterfacesCanBeUsedTransparently_WhenTransitivelyImplementing | 🟢 | 🟢 | ⭕ | ⭕ |
31 | reservedKeywordsAreSlugifiedInMethodNames | 🟢 | ⚪ | ⭕ | ⭕ |
32 | exceptions | 🟢 | 🟢 | ⭕ | ⭕ |
33 | testLiteralInterface | 🟢 | 🟢 | ⭕ | ⭕ |
34 | structs_nonOptionalhashCode | 🟢 | ⚪ | ⭕ | ⭕ |
35 | propertyOverrides_set_throws | 🟢 | 🟢 | ⭕ | ⭕ |
36 | canLeverageIndirectInterfacePolymorphism | 🟢 | 🔴 | ⭕ | ⭕ |
37 | fluentApi | 🟢 | ⚪ | ⭕ | ⭕ |
38 | staticListInClassCanBeReadCorrectly | 🟢 | 🟢 | ⭕ | ⭕ |
39 | mapReturnedByMethodCannotBeModified | 🟢 | ⚪ | ⭕ | ⭕ |
40 | receiveInstanceOfPrivateClass | 🟢 | 🟢 | ⭕ | ⭕ |
41 | staticMapInClassCanBeReadCorrectly | 🟢 | 🟢 | ⭕ | ⭕ |
42 | testNativeObjectsWithInterfaces | 🟢 | 🟢 | ⭕ | ⭕ |
43 | doNotOverridePrivates_property_getter_public | 🟢 | 🟢 | ⭕ | ⭕ |
44 | equalsIsResistantToPropertyShadowingResultVariable | 🟢 | 🟢 | ⭕ | ⭕ |
45 | listInClassCanBeReadCorrectly | 🟢 | 🟢 | ⭕ | ⭕ |
46 | useNestedStruct | 🟢 | 🟢 | ⭕ | ⭕ |
47 | testFluentApiWithDerivedClasses | 🟢 | 🟢 | ⭕ | ⭕ |
48 | interfacesCanBeUsedTransparently_WhenAddedToJsiiType | 🟢 | 🟢 | ⭕ | ⭕ |
49 | canOverrideProtectedGetter | 🟢 | 🟢 | ⭕ | ⭕ |
50 | getAndSetEnumValues | 🟢 | 🟢 | ⭕ | ⭕ |
51 | structs_nonOptionalequals | 🟢 | 🟢 | ⭕ | ⭕ |
52 | testInterfaceParameter | 🟢 | 🟢 | ⭕ | ⭕ |
53 | liftedKwargWithSameNameAsPositionalArg | 🟢 | 🟢 | ⭕ | ⭕ |
54 | creationOfNativeObjectsFromJavaScriptObjects | 🟢 | 🔴 | ⭕ | ⭕ |
55 | canOverrideProtectedMethod | 🟢 | 🟢 | ⭕ | ⭕ |
56 | canLoadEnumValues | 🟢 | 🟢 | ⭕ | ⭕ |
57 | eraseUnsetDataValues | 🟢 | 🟢 | ⭕ | ⭕ |
58 | maps | 🟢 | 🟢 | ⭕ | ⭕ |
59 | structs_containsNullChecks | 🟢 | 🔴 | ⭕ | ⭕ |
60 | canOverrideProtectedSetter | 🟢 | 🟢 | ⭕ | ⭕ |
61 | asyncOverrides_callAsyncMethod | 🟢 | 🔴 | ⭕ | ⭕ |
62 | nodeStandardLibrary | 🟢 | 🔴 | ⭕ | ⭕ |
63 | dates | 🟢 | 🟢 | ⭕ | ⭕ |
64 | collectionOfInterfaces_ListOfStructs | 🟢 | 🟢 | ⭕ | ⭕ |
65 | objRefsAreLabelledUsingWithTheMostCorrectType | 🟢 | 🔴 | ⭕ | ⭕ |
66 | unionPropertiesWithBuilder | 🟢 | 🟢 | ⭕ | ⭕ |
67 | doNotOverridePrivates_property_getter_private | 🟢 | 🟢 | ⭕ | ⭕ |
68 | structs_withDiamondInheritance_correctlyDedupeProperties | 🟢 | 🟢 | ⭕ | ⭕ |
69 | abstractMembersAreCorrectlyHandled | 🟢 | 🟢 | ⭕ | ⭕ |
70 | doNotOverridePrivates_property_by_name_private | 🟢 | 🟢 | ⭕ | ⭕ |
71 | testNullIsAValidOptionalMap | 🟢 | 🟢 | ⭕ | ⭕ |
72 | mapReturnedByMethodCanBeRead | 🟢 | 🟢 | ⭕ | ⭕ |
73 | structs_multiplePropertiesEquals | 🟢 | 🟢 | ⭕ | ⭕ |
74 | mapInClassCanBeReadCorrectly | 🟢 | 🟢 | ⭕ | ⭕ |
75 | staticListInClassCannotBeModified | 🟢 | ⚪ | ⭕ | ⭕ |
76 | collectionOfInterfaces_MapOfInterfaces | 🟢 | 🟢 | ⭕ | ⭕ |
77 | asyncOverrides_overrideThrows | 🟢 | 🔴 | ⭕ | ⭕ |
78 | callMethods | 🟢 | 🟢 | ⭕ | ⭕ |
79 | returnAbstract | 🟢 | 🟢 | ⭕ | ⭕ |
80 | dynamicTypes | 🟢 | 🟢 | ⭕ | ⭕ |
81 | hashCodeIsResistantToPropertyShadowingResultVariable | 🟢 | ⚪ | ⭕ | ⭕ |
82 | returnSubclassThatImplementsInterface976 | 🟢 | 🟢 | ⭕ | ⭕ |
83 | structs_optionalEquals | 🟢 | ⚪ | ⭕ | ⭕ |
84 | propertyOverrides_get_calls_super | 🟢 | 🟢 | ⭕ | ⭕ |
85 | unmarshallIntoAbstractType | 🟢 | 🟢 | ⭕ | ⭕ |
86 | structs_multiplePropertiesHashCode | 🟢 | ⚪ | ⭕ | ⭕ |
87 | fail_syncOverrides_callsDoubleAsync_propertyGetter | 🟢 | 🟢 | ⭕ | ⭕ |
88 | propertyOverrides_get_set | 🟢 | 🟢 | ⭕ | ⭕ |
89 | variadicMethodCanBeInvoked | 🟢 | 🟢 | ⭕ | ⭕ |
90 | collectionTypes | 🟢 | 🟢 | ⭕ | ⭕ |
91 | asyncOverrides_overrideAsyncMethodByParentClass | 🟢 | 🔴 | ⭕ | ⭕ |
92 | structs_optionalHashCode | 🟢 | ⚪ | ⭕ | ⭕ |
93 | testStructsCanBeDowncastedToParentType | 🟢 | 🟢 | ⭕ | ⭕ |
94 | propertyOverrides_get_throws | 🟢 | 🟢 | ⭕ | ⭕ |
95 | getSetPrimitiveProperties | 🟢 | 🟢 | ⭕ | ⭕ |
96 | getAndSetNonPrimitiveProperties | 🟢 | 🟢 | ⭕ | ⭕ |
97 | reservedKeywordsAreSlugifiedInStructProperties | 🟢 | 🟢 | ⭕ | ⭕ |
98 | fail_syncOverrides_callsDoubleAsync_propertySetter | 🟢 | 🟢 | ⭕ | ⭕ |
99 | doNotOverridePrivates_method_public | 🟢 | 🟢 | ⭕ | ⭕ |
100 | testNullIsAValidOptionalList | 🟢 | 🟢 | ⭕ | ⭕ |
101 | mapInClassCannotBeModified | 🟢 | ⚪ | ⭕ | ⭕ |
102 | doNotOverridePrivates_property_by_name_public | 🟢 | 🟢 | ⭕ | ⭕ |
103 | asyncOverrides_twoOverrides | 🟢 | 🔴 | ⭕ | ⭕ |
104 | propertyOverrides_set_calls_super | 🟢 | 🟢 | ⭕ | ⭕ |
105 | iso8601DoesNotDeserializeToDate | 🟢 | 🟢 | ⭕ | ⭕ |
106 | collectionOfInterfaces_ListOfInterfaces | 🟢 | 🟢 | ⭕ | ⭕ |
107 | undefinedAndNull | 🟢 | 🟢 | ⭕ | ⭕ |
108 | structs_serializeToJsii | 🟢 | 🟢 | ⭕ | ⭕ |
109 | structsAreUndecoratedOntheWayToKernel | 🟢 | 🟢 | ⭕ | ⭕ |
110 | canObtainReferenceWithOverloadedSetter | 🟢 | 🟢 | ⭕ | ⭕ |
111 | testJSObjectLiteralToNative | 🟢 | 🟢 | ⭕ | ⭕ |
112 | structs_stepBuilders | 🟢 | ⚪ | ⭕ | ⭕ |
113 | classWithPrivateConstructorAndAutomaticProperties | 🟢 | 🟢 | ⭕ | ⭕ |
114 | arrayReturnedByMethodCannotBeModified | 🟢 | ⚪ | ⭕ | ⭕ |
115 | correctlyDeserializesStructUnions | 🟢 | 🟢 | ⭕ | ⭕ |
116 | subclassing | 🟢 | 🟢 | ⭕ | ⭕ |
117 | testInterfaces | 🟢 | 🟢 | ⭕ | ⭕ |
118 | [callbackParameterIsInterface]("Validates pure interfaces can be passed to callbacks") | ⭕ | 🟢 | ⭕ | ⭕ |
119 | [classCanBeUsedWhenNotExpressedlyLoaded]("Validates that types not explicitly loaded by the user can safely be returned by JS code") | 🟢 | 🟢 | ⭕ | ⭕ |
120 | [downcasting]("Ensures unsafe-cast features work as expected") | ⭕ | 🟢 | ⭕ | ⭕ |