/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠVS CT Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġfr . vs ct . to ck . bot . test Ċ Ċ import Ġfr . vs ct . to ck . bot . connector . Connector Message Ċ import Ġfr . vs ct . to ck . bot . connector . messenger . messenger Connector Type Ċ import Ġfr . vs ct . to ck . bot . connector . messenger . model . Messenger Connector Message Ċ import Ġfr . vs ct . to ck . bot . connector . messenger . with Messenger Ċ import Ġfr . vs ct . to ck . bot . connector . twitter . model . Twitter Connector Message Ċ import Ġfr . vs ct . to ck . bot . connector . twitter . twitter Connector Type Ċ import Ġfr . vs ct . to ck . bot . connector . twitter . with Twitter Ċ import Ġfr . vs ct . to ck . bot . definition . Bot Definition Ċ import Ġfr . vs ct . to ck . bot . definition . Intent Aware Ċ import Ġfr . vs ct . to ck . bot . definition . Story Definition Base Ċ import Ġfr . vs ct . to ck . bot . definition . Story Handler Base Ċ import Ġfr . vs ct . to ck . bot . definition . Story Handler Definition Ċ import Ġfr . vs ct . to ck . bot . definition . Story Step Ċ import Ġfr . vs ct . to ck . bot . engine . Bot Bus Ċ import Ġfr . vs ct . to ck . bot . engine . action . Action Ċ import Ġfr . vs ct . to ck . bot . engine . action . Send Choice Ċ import Ġfr . vs ct . to ck . bot . engine . dialog . Entity Value Ċ import Ġfr . vs ct . to ck . bot . engine . message . Message Ċ import Ġfr . vs ct . to ck . bot . engine . message . Messages List Ċ import Ġfr . vs ct . to ck . bot . engine . user . Player Id Ċ import Ġfr . vs ct . to ck . bot . engine . user . User Preferences Ċ import Ġfr . vs ct . to ck . bot . engine . user . User State Ċ import Ġfr . vs ct . to ck . bot . engine . user . User Timeline Ċ import Ġfr . vs ct . to ck . nlp . api . client . model . Entity Ċ import Ġfr . vs ct . to ck . nlp . entity . Value Ċ import Ġfr . vs ct . to ck . shared . default Locale Ċ import Ġfr . vs ct . to ck . translator . I 1 8 n Context Ċ import Ġfr . vs ct . to ck . translator . Translated Sequence Ċ import Ġfr . vs ct . to ck . translator . Translator Ċ import Ġfr . vs ct . to ck . translator . User Interface Type . text And Voice Assistant Ċ import Ġfr . vs ct . to ck . translator . User Interface Type . text Chat Ċ import Ġfr . vs ct . to ck . translator . raw Ċ import Ġio . mock k . clear All Mocks Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . mock k Object Ċ import Ġio . mock k . mock k Static Ċ import Ġjava . time . Instant Ċ Ċ private Ġval Ġend Called Ġ= ĠThread Local < Boolean >() Ċ Ċ /** Ċ Ġ* ĠTest Ġa Ġ[ Story Definition ] Ġwith Ġa Ġmocked Ġ( mock k ) Ġ[ Bot Bus ]. Ċ Ġ*/ Ċ fun ĠStory Definition Base . test ( bus : ĠBot Bus ) Ġ{ ĊĠĠĠ Ġend Called . remove () ĊĠĠĠ Ġval Ġhandler Ġ= Ġstory Handler Ġas ? ĠStory Handler Base < *> ĊĠĠĠ Ġhandler ?. check Preconditions ()?. invoke ( bus ) ĊĠĠĠ Ġif Ġ( end Called . get () Ġ!= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( story Handler Ġas ? ĠStory Handler Base <* >) ?. new Handler Definition ( bus )?. handle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" story Ġhandler Ġis Ġnot Ġa ĠStory Handler Base ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠDefault Ġmock k ĠBot Bus Ġconfiguration . Ċ Ġ*/ Ċ fun Ġmock To ck Common ( bus : ĠBot Bus ) Ġ{ ĊĠĠĠ Ġclear All Mocks () ĊĊĠĠĠ Ġevery Ġ{ Ġbus . step Ġ} Ġreturns Ġnull ĊĠĠĠ Ġevery Ġ{ Ġbus . current Answer Index Ġ} Ġreturns Ġ 0 ĊĠĠĠ Ġevery Ġ{ Ġbus . choice ( any ()) Ġ} Ġreturns Ġnull ĊĠĠĠ Ġevery Ġ{ Ġbus . is Intent ( any ()) Ġ} Ġreturns Ġfalse ĊĠĠĠ Ġevery Ġ{ Ġbus . with Message ( any ()) Ġ}. answers Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bus . target Connector Type Ġ== Ġ( args [ 0 ] Ġas ĠConnector Message ). connector Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas Ġ(() Ġ-> ĠConnector Message )). invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbus ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// with Message ĊĠĠĠ Ġevery Ġ{ Ġbus . with Message ( any (), Ġany ()) Ġ}. answers Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bus . target Connector Type Ġ== Ġargs [ 0 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( args [ 1 ] Ġas Ġ(() Ġ-> ĠConnector Message )). invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbus ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// send ĊĠĠĠ Ġevery Ġ{ Ġbus . send ( any < Message >(), Ġany ()) Ġ} Ġreturns Ġbus ĊĠĠĠ Ġevery Ġ{ Ġbus . send ( any < Action >(), Ġany ()) Ġ} Ġreturns Ġbus ĊĠĠĠ Ġevery Ġ{ Ġbus . send ( any < Long >()) Ġ} Ġreturns Ġbus ĊĠĠĠ Ġevery Ġ{ Ġbus . send ( any < CharSequence >(), Ġany ()) Ġ} Ġreturns Ġbus ĊĠĠĠ Ġevery Ġ{ Ġbus . send ( any (), Ġany (), Ġ* any Var arg ()) Ġ} Ġreturns Ġbus ĊĠĠĠ Ġevery Ġ{ Ġbus . send ( any (), Ġ* any Var arg ()) Ġ} Ġreturns Ġbus ĊĠĠĠ Ġevery Ġ{ Ġbus . send ( any < Long >(), Ġany ()) Ġ}. answers Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġ( args [ 1 ] Ġas ĠBot Bus . () Ġ-> ĠAny ?). invoke ( bus ) ĊĠĠĠĠĠĠĠ Ġbus ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend ĊĠĠĠ Ġfun ĠBot Bus . end Call (): ĠBot Bus Ġ= Ġapply Ġ{ Ġend Called . set ( true ) Ġ} ĊĊĠĠĠ Ġevery Ġ{ Ġbus . end ( any < Messages List >(), Ġany ()) Ġ} Ġanswers Ġ{ Ġbus . end Call () Ġ} ĊĠĠĠ Ġevery Ġ{ Ġbus . end ( any < Message >(), Ġany ()) Ġ} Ġanswers Ġ{ Ġbus . end Call () Ġ} ĊĠĠĠ Ġevery Ġ{ Ġbus . end ( any < Action >(), Ġany ()) Ġ} Ġanswers Ġ{ Ġbus . end Call () Ġ} ĊĠĠĠ Ġevery Ġ{ Ġbus . end ( any < Long >()) Ġ} Ġanswers Ġ{ Ġbus . end Call () Ġ} ĊĠĠĠ Ġevery Ġ{ Ġbus . end ( any < CharSequence >(), Ġany ()) Ġ} Ġanswers Ġ{ Ġbus . end Call () Ġ} ĊĠĠĠ Ġevery Ġ{ Ġbus . end ( any (), Ġany (), Ġ* any Var arg ()) Ġ} Ġanswers Ġ{ Ġbus . end Call () Ġ} ĊĠĠĠ Ġevery Ġ{ Ġbus . end ( any (), Ġ* any Var arg ()) Ġ} Ġanswers Ġ{ Ġbus . end Call () Ġ} ĊĠĠĠ Ġevery Ġ{ Ġbus . end ( any < Long >(), Ġany ()) Ġ}. answers Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġ( args [ 1 ] Ġas ĠBot Bus . () Ġ-> ĠAny ?). invoke ( bus ) ĊĠĠĠĠĠĠĠ Ġbus . end Call () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠ Ġbus . entity Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany < Entity >(), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany <( Entity Value ) Ġ-> ĠValue ?> () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġreturns Ġnull ĊĠĠĠ Ġevery Ġ{ Ġbus . change Entity Value ( any (), Ġany < Value >()) Ġ} Ġreturns ĠUnit ĊĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠ Ġbus . entity Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany < Entity >() ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġreturns Ġnull ĊĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠ Ġbus . entity Value Details ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany < Entity >() ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġreturns Ġnull ĊĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠ Ġbus . entity Value Details ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany < String >() ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġreturns Ġnull ĊĠĠĠ Ġevery Ġ{ Ġbus . change Entity Text ( any (), Ġany ()) Ġ} Ġreturns ĠUnit ĊĊĠĠĠ Ġval Ġplayer Id Ġ= ĠPlayer Id (" user ") ĊĠĠĠ Ġevery Ġ{ Ġbus . userId Ġ} Ġreturns Ġplayer Id ĊĠĠĠ Ġval Ġbot Id Ġ= ĠPlayer Id (" bot ") ĊĠĠĠ Ġevery Ġ{ Ġbus . bot Id Ġ} Ġreturns Ġbot Id ĊĊĠĠĠ Ġval Ġuser Timeline : ĠUser Timeline Ġ= Ġmock k () ĊĠĠĠ Ġval Ġuser State Ġ= ĠUser State ( Instant . now ()) ĊĠĠĠ Ġevery Ġ{ Ġbus . user Timeline Ġ} Ġreturns Ġuser Timeline ĊĠĠĠ Ġevery Ġ{ Ġuser Timeline . user State Ġ} Ġreturns Ġuser State ĊĠĠĠ Ġevery Ġ{ Ġuser Timeline . player Id Ġ} Ġreturns Ġplayer Id ĊĊĠĠĠ Ġevery Ġ{ Ġbus . user Locale Ġ} Ġreturns Ġdefault Locale ĊĠĠĠ Ġevery Ġ{ Ġbus . user Preferences Ġ} Ġreturns ĠUser Preferences () ĊĠĠĠ Ġevery Ġ{ Ġbus . user Interface Type Ġ} Ġreturns Ġtext And Voice Assistant ĊĊĠĠĠ Ġval Ġbot Definition : ĠBot Definition Ġ= Ġmock k () ĊĠĠĠ Ġevery Ġ{ Ġbus . bot Definition Ġ} Ġreturns Ġbot Definition ĊĠĠĠ Ġevery Ġ{ Ġbot Definition . default Delay ( any ()) Ġ} Ġreturns Ġ 0 ĊĠĠĠ Ġevery Ġ{ Ġbus . reset Dialog State () Ġ} Ġreturns ĠUnit ĊĊĠĠĠ Ġevery Ġ{ Ġbus . translate ( any ()) Ġ} Ġanswers Ġ{ Ġargs [ 0 ] Ġas ĠTrans lated Sequence Ġ} ĊĠĠĠ Ġevery Ġ{ Ġbus . translate ( any (), Ġ* any Var arg ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠ ĠTrans lator . format Message ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs [ 0 ] Ġas ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠI 1 8 n Context ( default Locale , Ġtext Chat , Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . sub List ( 1 , Ġargs . size ) ĊĠĠĠĠĠĠĠ Ġ). raw ĊĠĠĠ Ġ} ĊĠĠĠ Ġevery Ġ{ Ġbus . default Delay ( any ()) Ġ} Ġreturns Ġ 0 ĊĊĠĠĠ Ġmock k Object ( Send Choice . Companion ) ĊĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠ ĠSend Choice . encode Choice Id ( bus , Ġany (), Ġany < Story Step <* >> (), Ġany ()) ĊĠĠĠ Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ ĠSend Choice . encode Choice Id ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( args [ 1 ] Ġas ĠIntent Aware ). wrapped Intent (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs [ 2 ] Ġas ? ĠStory Step < out ĠStory Handler Definition >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( args [ 3 ] Ġas ? ĠMap < String , ĠString >) Ġ?: Ġempty Map (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠ ĠSend Choice . encode Choice Id ( bus , Ġany (), Ġany < String >(), Ġany ()) ĊĠĠĠ Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ ĠSend Choice . encode Choice Id ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( args [ 1 ] Ġas ĠIntent Aware ). wrapped Intent (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs [ 2 ] Ġas ? ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( args [ 3 ] Ġas ? ĠMap < String , ĠString >) Ġ?: Ġempty Map (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠMock Ġclassic Ġmess enger Ġextensions . Ċ Ġ*/ Ċ fun Ġmock Messenger ( bus : ĠBot Bus ) Ġ{ ĊĠĠĠ Ġmock To ck Common ( bus ) ĊĠĠĠ Ġmock k Static (" fr . vs ct . to ck . bot . connector . messenger . Messenger Builders Kt ") ĊĠĠĠ Ġevery Ġ{ Ġbus . target Connector Type Ġ} Ġreturns Ġmess enger Connector Type ĊĠĠĠ Ġevery Ġ{ Ġbus . with Messenger ( any ()) Ġ}. answers Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bus . target Connector Type Ġ== Ġmess enger Connector Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( args [ 1 ] Ġas Ġ(() Ġ-> ĠMess enger Connector Message )). invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbus ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠMock Ġclassic Ġtwitter Ġextensions . Ċ Ġ*/ Ċ fun Ġmock Twitter ( bus : ĠBot Bus ) Ġ{ ĊĠĠĠ Ġmock To ck Common ( bus ) ĊĠĠĠ Ġmock k Static (" fr . vs ct . to ck . bot . connector . twitter . Twitter Builders Kt ") ĊĠĠĠ Ġevery Ġ{ Ġbus . target Connector Type Ġ} Ġreturns Ġtwitter Connector Type ĊĠĠĠ Ġevery Ġ{ Ġbus . with Twitter ( any ()) Ġ}. answers Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bus . target Connector Type Ġ== Ġtwitter Connector Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( args [ 1 ] Ġas Ġ(() Ġ-> ĠTwitter Connector Message )). invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbus ĊĠĠĠ Ġ} Ċ }