package Ġio . vex el abs . bit builder . llvm . unit . ir Ċ Ċ import Ġio . vex el abs . bit builder . llvm . ir . Builder Ċ import Ġio . vex el abs . bit builder . llvm . ir . Module Ċ import Ġio . vex el abs . bit builder . llvm . ir . types . FunctionType Ċ import Ġio . vex el abs . bit builder . llvm . ir . types . Void Type Ċ import Ġio . vex el abs . bit builder . llvm . setup Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ import Ġkotlin . test . assertNull Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ Ċ internal Ġclass ĠBuilder Test Ġ: ĠSpe k ({ ĊĠĠĠ Ġsetup () ĊĊĠĠĠ Ġval Ġmodule : ĠModule Ġby Ġmemoized () ĊĠĠĠ Ġval Ġbuilder : ĠBuilder Ġby Ġmemoized () ĊĊĠĠĠ Ġgroup (" position ing Ġthe Ġbuilder ") Ġ{ ĊĠĠĠĠĠĠĠ Ġtest (" may Ġposition Ġafter Ġa Ġbasic Ġblock ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfn Ġ= Ġmodule . create Function ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" test ", ĠFunction Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVoid Type (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbb Ġ= Ġfn . create Block (" entry ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( builder . get Insertion Block ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setPosition At End ( bb ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( builder . get Insertion Block ()?. ref , Ġbb . ref ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest (" the Ġbuilder Ġhand Ġmay Ġbe Ġcleared ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfn Ġ= Ġmodule . create Function ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" test ", ĠFunction Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVoid Type (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbb Ġ= Ġfn . create Block (" entry ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setPosition At End ( bb ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( builder . get Insertion Block ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( builder . get Insertion Block ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ