package Ġtests Ċ Ċ import ĠCode d InputStream Ċ import ĠFirst Message Ċ import ĠSecond Message Ċ import ĠThird Message Ċ Ċ object ĠMultiple Messages Test Ġ{ ĊĠĠĠ Ġfun Ġgenerate Kt First Message (): ĠFirst Message Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFirst Message . Builder First Message ( Util . nextInt ()). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerate Kt Second Message (): ĠSecond Message Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSecond Message . Builder Second Message ( generate Kt First Message ()). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerate Kt Third Message (): ĠThird Message Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠThird Message . Builder Third Message ( generate Kt Second Message ()). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcompare Third Messages ( kt 1 : ĠThird Message , Ġkt 2 : ĠThird Message ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġkt 1 . second _ msg . first _ msg . int _ field Ġ== Ġkt 2 . second _ msg . first _ msg . int _ field ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġkt To Kt Once () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġgenerate Kt Third Message () ĊĠĠĠĠĠĠĠ Ġval Ġout s Ġ= ĠUtil . get Kt OutputStream ( msg . getSize No Tag ()) ĊĠĠĠĠĠĠĠ Ġmsg . writeTo ( outs ) ĊĊĠĠĠĠĠĠĠ Ġval Ġins Ġ= ĠCode d InputStream ( outs . buffer ) ĊĠĠĠĠĠĠĠ Ġval Ġread Msg Ġ= ĠThird Message . Builder Third Message ( Second Message . Builder Second Message ( First Message . Builder First Message ( 0 ). build ()). build ()). build () ĊĠĠĠĠĠĠĠ Ġread Msg . mergeFrom ( ins ) ĊĊĠĠĠĠĠĠĠ ĠUtil . assert ( read Msg . errorCode Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠUtil . assert ( compare Third Messages ( msg , Ġread Msg )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġval Ġtest Runs Ġ= Ġ 1 0 0 0 ĊĊĠĠĠ Ġfun Ġrun Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. test Runs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkt To Kt Once () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }