package Ġcom . a oc . int code . computer . strategy Ċ Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . isEqualTo Ċ import Ġcom . a oc . int code . computer . Memory Ċ import Ġcom . a oc . int code . computer . OpCode Ċ import Ġcom . a oc . int code . computer . instructions . str ategies . Jump If True Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠJump If True Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġstrategy Ġ= ĠJump If True () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" Given Ġa ĠJump ĠIf ĠTrue ĠOp Code Ġin ĠPOSITION Ġmode , Ġwhen Ġthe Ġfirst Ġparameter Ġis Ġnon - zero , Ġ" Ġ+ ĊĠĠĠ Ġ" then Ġit Ġshould Ġset Ġthe Ġinstruction Ġpointer Ġto Ġthe Ġvalue Ġat Ġthe Ġindex Ġof Ġthe Ġsecond Ġparameter ") ĊĠĠĠ Ġfun Ġjump If True First Parameter Non Zero Position Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġop Code Ġ= ĠOp Code (" 5 ") ĊĠĠĠĠĠĠĠ Ġval Ġmemory Snapshot Ġ= ĠMemory ( listOf ( 5 , Ġ 3 , Ġ 1 , Ġ 9 9 )) ĊĠĠĠĠĠĠĠ Ġval Ġfinal Snapshot Ġ= Ġstrategy . execute ( memory Snapshot , Ġop Code . parameter Modes ) ĊĠĠĠĠĠĠĠ ĠassertThat ( final Snapshot . instruction Pointer ). isEqualTo ( 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" Given Ġa ĠJump ĠIf ĠTrue ĠOp Code Ġin ĠPOSITION Ġmode , Ġwhen Ġthe Ġfirst Ġparameter Ġis Ġzero ," Ġ+ ĊĠĠĠ Ġ" then Ġit Ġshould Ġincrement Ġthe Ġinstruction Ġpointer Ġby Ġthe Ġinstruction Ġlength ") ĊĠĠĠ Ġfun Ġjump If True First Parameter Zero Position Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġop Code Ġ= ĠOp Code (" 5 ") ĊĠĠĠĠĠĠĠ Ġval Ġmemory Snapshot Ġ= ĠMemory ( listOf ( 5 , Ġ 2 , Ġ 0 , Ġ 9 9 )) ĊĠĠĠĠĠĠĠ Ġval Ġfinal Snapshot Ġ= Ġstrategy . execute ( memory Snapshot , Ġop Code . parameter Modes ) ĊĠĠĠĠĠĠĠ ĠassertThat ( final Snapshot . instruction Pointer ). isEqualTo ( 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" Given Ġa ĠJump ĠIf ĠTrue ĠOp Code Ġin ĠIM MEDI ATE Ġmode , Ġwhen Ġthe Ġfirst Ġparameter Ġis Ġnon - zero , Ġ" Ġ+ ĊĠĠĠ Ġ" then Ġit Ġshould Ġset Ġthe Ġinstruction Ġpointer Ġto Ġthe Ġvalue Ġof Ġthe Ġsecond Ġparameter ") ĊĠĠĠ Ġfun Ġjump If True First Parameter Non Zero Immediate Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġop Code Ġ= ĠOp Code (" 1 1 0 5 ") ĊĠĠĠĠĠĠĠ Ġval Ġmemory Snapshot Ġ= ĠMemory ( listOf ( 1 1 0 5 , Ġ 3 , Ġ 1 , Ġ 9 9 )) ĊĠĠĠĠĠĠĠ Ġval Ġfinal Snapshot Ġ= Ġstrategy . execute ( memory Snapshot , Ġop Code . parameter Modes ) ĊĠĠĠĠĠĠĠ ĠassertThat ( final Snapshot . instruction Pointer ). isEqualTo ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" Given Ġa ĠJump ĠIf ĠTrue ĠOp Code Ġin ĠIM MEDI ATE Ġmode , Ġwhen Ġthe Ġfirst Ġparameter Ġis Ġzero ," Ġ+ ĊĠĠĠ Ġ" then Ġit Ġshould Ġincrement Ġthe Ġinstruction Ġpointer Ġby Ġit 's Ġinstruction Ġlength ") ĊĠĠĠ Ġfun Ġjump If True First Parameter Zero Immediate Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġop Code Ġ= ĠOp Code (" 1 1 0 5 ") ĊĠĠĠĠĠĠĠ Ġval Ġmemory Snapshot Ġ= ĠMemory ( listOf ( 1 1 0 5 , Ġ 0 , Ġ 1 , Ġ 9 9 )) ĊĠĠĠĠĠĠĠ Ġval Ġfinal Snapshot Ġ= Ġstrategy . execute ( memory Snapshot , Ġop Code . parameter Modes ) ĊĠĠĠĠĠĠĠ ĠassertThat ( final Snapshot . instruction Pointer ). isEqualTo ( 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" Given Ġa ĠJIT ĠOp Code Ġ( 2 2 0 5 ) Ġin ĠREL ATIVE Ġmode , Ġwhen Ġthe Ġvalue Ġat Ġthe Ġindex Ġgiven Ġby Ġthe Ġsum Ġof Ġthe " Ġ+ ĊĠĠĠ Ġ" relative Ġbase Ġand Ġthe Ġfirst Ġparameter Ġis Ġnon - zero , Ġthen Ġit Ġshould Ġset Ġthe Ġinstruction Ġpointer Ġto Ġthe Ġvalue " Ġ+ ĊĠĠĠ Ġ" given Ġby Ġthe Ġsum Ġof Ġthe Ġrelative Ġbase Ġand Ġthe Ġsecond Ġparameter ") ĊĠĠĠ Ġfun Ġjump If True First Parameter Non Zero Relative Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġop Code Ġ= ĠOp Code (" 2 2 0 5 ") ĊĠĠĠĠĠĠĠ Ġval Ġmemory Snapshot Ġ= ĠMemory ( listOf ( 2 2 0 5 , Ġ 4 , Ġ 4 , Ġ 9 9 , Ġ 8 7 )) ĊĠĠĠĠĠĠĠ Ġval Ġfinal Snapshot Ġ= Ġstrategy . execute ( memory Snapshot , Ġop Code . parameter Modes ) ĊĠĠĠĠĠĠĠ ĠassertThat ( final Snapshot . instruction Pointer ). isEqualTo ( 8 7 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" Given Ġa ĠJIT ĠOp Code Ġ( 2 2 0 5 ) Ġin ĠREL ATIVE Ġmode , Ġwhen Ġthe Ġvalue Ġat Ġthe Ġindex Ġgiven Ġby Ġthe Ġsum Ġof Ġthe " Ġ+ ĊĠĠĠ Ġ" relative Ġbase Ġand Ġthe Ġfirst Ġparameter Ġis Ġzero , Ġthen Ġit Ġshould Ġset Ġthe Ġinstruction Ġpointer Ġto Ġthe Ġinstruction Ġlength ") ĊĠĠĠ Ġfun Ġjump If True First Parameter Zero Relative Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġop Code Ġ= ĠOp Code (" 2 2 0 5 ") ĊĠĠĠĠĠĠĠ Ġval Ġmemory Snapshot Ġ= ĠMemory ( listOf ( 2 2 0 5 , Ġ 4 , Ġ 4 , Ġ 9 9 , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġval Ġfinal Snapshot Ġ= Ġstrategy . execute ( memory Snapshot , Ġop Code . parameter Modes ) ĊĠĠĠĠĠĠĠ ĠassertThat ( final Snapshot . instruction Pointer ). isEqualTo ( 3 ) ĊĠĠĠ Ġ} Ċ }