Libraryless. Click here for Pure Java version (15396L/98K).
concept Bla { new Ref<Bla> ref; } svoid test_cset_with_Ref() { // unlisted concepts do not track back references Bla a = unlisted Bla(); Bla b = unlisted Bla(); assertEqualsVerbose(1, cset(a, ref := b)); assertSame(a.ref!, b); assertEmptyVerbose(findBackRefs Bla(b)); new Concepts cc; // test with registered concepts a = cnew(cc, Bla); b = cnew(cc, Bla); assertEqualsVerbose(1, cset(a, ref := b)); assertSame(a.ref!, b); assertEqualsVerbose(ll(a), findBackRefs Bla(b)); assertEqualsVerbose(1, cset(a, ref := null)); assertNull(a.ref!); // make sure the Ref object itself is not deleted assertEqualsVerbose(ll(), findBackRefs Bla(b)); // test that back ref is gone // Now test a "dynamic" (undeclared) field assertEqualsVerbose(1, cset(a, ref2 := b)); assertEqualsVerbose(0, cset(a, ref2 := b)); assertSame(cget ref2(a), b); assertEqualsVerbose(ll(a), findBackRefs Bla(b)); assertEqualsVerbose(1, cset(a, ref2 := null)); assertEqualsVerbose(0, cset(a, ref2 := null)); assertNull(cget ref2(a)); assertEqualsVerbose(ll(), findBackRefs Bla(b)); // test that back ref is gone assertEmptyVerbose(ConceptsRefChecker(cc).run()); // overwrite reference with string assertEqualsVerbose(1, cset(a, ref2 := b)); assertEqualsVerbose(1, cset(a, ref2 := "")); assertEqualsVerbose(0, cset(a, ref2 := "")); assertEqualsVerbose(cget(a, "ref2"), ""); assertEmptyVerbose(ConceptsRefChecker(cc).run()); // overwrite string with reference assertEqualsVerbose(1, cset(a, ref2 := b)); assertEqualsVerbose(cget(a, "ref2"), b); assertEmptyVerbose(ConceptsRefChecker(cc).run()); // check that a list concepts in dynamic field is converted to RefL assertEqualsVerbose(1, cset(b, dynList := ll(a)); assertEqualsVerbose(0, cset(b, dynList := ll(a)); Concept.RefL refL = cast getOpt dynList(b); assertEqualsVerbose(1, l(refL)); assertEquals(a, first(refL)); // TODO: check updating/overwriting RefL }
download show line numbers debug dex old transpilations
Travelled to 7 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt, xrpafgyirdlv
No comments. add comment
| Snippet ID: | #1029630 | 
| Snippet name: | test_cset_with_Ref (OK) | 
| Eternal ID of this version: | #1029630/14 | 
| Text MD5: | acb959e550b6f1ffb4dbbfe97a744f2c | 
| Transpilation MD5: | 60a5c6a1a14f16b2569dbc2fcda92968 | 
| Author: | stefan | 
| Category: | javax | 
| Type: | JavaX fragment (include) | 
| Public (visible to everyone): | Yes | 
| Archived (hidden from active list): | No | 
| Created/modified: | 2021-04-09 16:39:08 | 
| Source code size: | 2058 bytes / 62 lines | 
| Pitched / IR pitched: | No / No | 
| Views / Downloads: | 476 / 670 | 
| Version history: | 13 change(s) | 
| Referenced in: | [show references] |