11package  chargepoint .docile .dsl 
22
33import  com .thenewmotion .ocpp .messages .v1x ._ 
4- import  org .specs2 .mutable .Specification 
5- import  org .specs2 .specification .Scope 
6- import  org .specs2 .concurrent .ExecutionEnv 
7- 
8- class  ReceivedMsgManagerSpec (implicit  ee : ExecutionEnv ) extends  Specification  {
9- 
10-   " ReceivedMsgManager"   should {
11- 
12-     " pass on messages to those that requested them"   in {
13-       val  sut  =  new  ReceivedMsgManager [
14-         CentralSystemReq ,
15-         CentralSystemRes ,
16-         CentralSystemReqRes ,
17-         ChargePointReq ,
18-         ChargePointRes ,
19-         ChargePointReqRes 
20-       ]
21-       val  testMsg  =  GenericIncomingMessage [
22-         CentralSystemReq ,
23-         CentralSystemRes ,
24-         CentralSystemReqRes ,
25-         ChargePointReq ,
26-         ChargePointRes ,
27-         ChargePointReqRes 
28-       ](StatusNotificationRes )
29- 
30-       val  f  =  sut.dequeue(1 )
31- 
32-       f.isCompleted must beFalse
33- 
34-       sut.enqueue(testMsg)
35- 
36-       f must beEqualTo(List (testMsg)).await
37-     }
4+ import  org .scalatest .flatspec .AnyFlatSpec 
5+ import  scala .concurrent .ExecutionContext .Implicits .global 
386
39-     " remember incoming messages until someone dequeues them"   in {
40-       val  sut  =  new  ReceivedMsgManager [
41-         CentralSystemReq ,
42-         CentralSystemRes ,
43-         CentralSystemReqRes ,
44-         ChargePointReq ,
45-         ChargePointRes ,
46-         ChargePointReqRes 
47-       ]
48-       val  testMsg  =  GenericIncomingMessage [
49-         CentralSystemReq ,
50-         CentralSystemRes ,
51-         CentralSystemReqRes ,
52-         ChargePointReq ,
53-         ChargePointRes ,
54-         ChargePointReqRes 
55-       ](StatusNotificationRes )
56- 
57-       sut.enqueue(testMsg)
58- 
59-       sut.dequeue(1 ) must beEqualTo(List (testMsg)).await
60-     }
7+ class  ReceivedMsgManagerSpec  extends  AnyFlatSpec  {
618
62-     " fulfill request for messages once enough are available"   in new  TestScope  {
63-       sut.enqueue(testMsg(1 ))
64-       sut.enqueue(testMsg(2 ))
9+   " ReceivedMsgManager"   should " pass on messages to those that requested them"   in {
10+     val  sut  =  receivedMsgManager()
11+     val  testMsg  =  GenericIncomingMessage [
12+       CentralSystemReq ,
13+       CentralSystemRes ,
14+       CentralSystemReqRes ,
15+       ChargePointReq ,
16+       ChargePointRes ,
17+       ChargePointReqRes 
18+     ](StatusNotificationRes )
6519
66-        val  f  =  sut.dequeue(3 )
20+     val  f  =  sut.dequeue(1 )
6721
68-        f.isCompleted must beFalse 
22+     assert( ! f.isCompleted) 
6923
70-        sut.enqueue(testMsg( 3 ) )
24+     sut.enqueue(testMsg)
7125
72-       f must beEqualTo(List (testMsg(1 ), testMsg(2 ), testMsg(3 ))).await
26+     f.map { dequeuedMsg => 
27+       assert(dequeuedMsg ===  List (testMsg))
7328    }
29+   }
30+ 
31+   it should " remember incoming messages until someone dequeues them"   in {
32+     val  sut  =  receivedMsgManager()
33+     val  testMsg  =  GenericIncomingMessage [
34+       CentralSystemReq ,
35+       CentralSystemRes ,
36+       CentralSystemReqRes ,
37+       ChargePointReq ,
38+       ChargePointRes ,
39+       ChargePointReqRes 
40+     ](StatusNotificationRes )
7441
75-     " allow a peek at what's in the queue"   in new  TestScope  {
76-       sut.enqueue(testMsg(1 ))
77-       sut.enqueue(testMsg(2 ))
42+     sut.enqueue(testMsg)
7843
79-       sut.currentQueueContents mustEqual List (testMsg(1 ), testMsg(2 ))
44+     sut.dequeue(1 ) map { dequeuedMsgs => 
45+       assert(dequeuedMsgs ===  List (testMsg))
8046    }
47+   }
48+ 
49+   it should " fulfill request for messages once enough are available"   in {
50+     val  sut  =  receivedMsgManager()
51+     sut.enqueue(testMsg(1 ))
52+     sut.enqueue(testMsg(2 ))
8153
82-     " flush the queue"   in new  TestScope  {
83-       sut.enqueue(testMsg(1 ))
84-       sut.enqueue(testMsg(2 ))
54+     val  f  =  sut.dequeue(3 )
8555
86-       sut.currentQueueContents mustEqual  List (testMsg( 1 ), testMsg( 2 ) )
56+     assert( ! f.isCompleted )
8757
88-        sut.flush( )
58+     sut.enqueue(testMsg( 3 ) )
8959
90-       sut.currentQueueContents must beEmpty
60+     f map { dequeuedMsgs => 
61+       assert(dequeuedMsgs ===  List (testMsg(1 ), testMsg(2 ), testMsg(3 )))
9162    }
9263  }
9364
94-   private  trait  TestScope  extends  Scope  {
95-     val  testIdTagInfo  =  IdTagInfo (status =  AuthorizationStatus .Accepted )
65+   it should " allow a peek at what's in the queue"   in {
66+     val  sut  =  receivedMsgManager()
67+     sut.enqueue(testMsg(1 ))
68+     sut.enqueue(testMsg(2 ))
69+ 
70+     assert(sut.currentQueueContents ===  List (testMsg(1 ), testMsg(2 )))
71+   }
72+ 
73+   it should " flush the queue"   in {
74+     val  sut  =  receivedMsgManager()
75+     sut.enqueue(testMsg(1 ))
76+     sut.enqueue(testMsg(2 ))
9677
97-     val  sut  =  new  ReceivedMsgManager [
78+     assert(sut.currentQueueContents ===  List (testMsg(1 ), testMsg(2 )))
79+ 
80+     sut.flush()
81+ 
82+     assert(sut.currentQueueContents.isEmpty)
83+   }
84+ 
85+   private  val  testIdTagInfo  =  IdTagInfo (status =  AuthorizationStatus .Accepted )
86+ 
87+   private  def  receivedMsgManager () =  new  ReceivedMsgManager [
9888      CentralSystemReq ,
9989      CentralSystemRes ,
10090      CentralSystemReqRes ,
@@ -103,7 +93,7 @@ class ReceivedMsgManagerSpec(implicit ee: ExecutionEnv) extends Specification {
10393      ChargePointReqRes 
10494    ]
10595
106-      def  testMsg (seqNo : Int ) =  GenericIncomingMessage [
96+   private  def  testMsg (seqNo : Int ) =  GenericIncomingMessage [
10797      CentralSystemReq ,
10898      CentralSystemRes ,
10999      CentralSystemReqRes ,
@@ -114,6 +104,4 @@ class ReceivedMsgManagerSpec(implicit ee: ExecutionEnv) extends Specification {
114104      transactionId =  seqNo,
115105      idTag =  testIdTagInfo
116106    ))
117- 
118-   }
119107}
0 commit comments