@@ -69,15 +69,29 @@ describe('test', () => {
6969 expect ( env . epoch ) . toBe ( 0 )
7070 } )
7171
72- test . each ( [ 0 , 1000 ] ) ( 'bar position: %p ' , p => {
72+ test ( 'bar position: under ' , ( ) => {
7373 const env = new BreakerRLEnvironment ( )
7474 const state = env . reset ( )
75- state [ 4 ] = p
75+ state [ 4 ] = 0
7676
7777 const info = env . test ( state , [ 0 ] )
7878 expect ( info . done ) . toBeFalsy ( )
7979 expect ( info . reward ) . toBe ( 0.1 )
8080 expect ( info . state ) . toHaveLength ( 85 )
81+ expect ( info . state [ 4 ] ) . toBe ( env . _paddle_size [ 0 ] / 2 )
82+ expect ( env . epoch ) . toBe ( 0 )
83+ } )
84+
85+ test ( 'bar position: over' , ( ) => {
86+ const env = new BreakerRLEnvironment ( )
87+ const state = env . reset ( )
88+ state [ 4 ] = 1000
89+
90+ const info = env . test ( state , [ 0 ] )
91+ expect ( info . done ) . toBeFalsy ( )
92+ expect ( info . reward ) . toBe ( 0.1 )
93+ expect ( info . state ) . toHaveLength ( 85 )
94+ expect ( info . state [ 4 ] ) . toBe ( env . _size [ 0 ] - env . _paddle_size [ 0 ] / 2 )
8195 expect ( env . epoch ) . toBe ( 0 )
8296 } )
8397
@@ -97,27 +111,62 @@ describe('test', () => {
97111 expect ( env . epoch ) . toBe ( 0 )
98112 } )
99113
100- test ( 'hit paddle side' , ( ) => {
114+ test . each ( [
115+ [ 1 , - 1 ] ,
116+ [ - 1 , 1 ] ,
117+ ] ) ( 'hit paddle side: %p' , ( dx , dy ) => {
101118 const env = new BreakerRLEnvironment ( )
102119 const state = env . reset ( )
103120 state [ 0 ] = 100 - env . _paddle_size [ 0 ] / 2
104121 state [ 1 ] = env . _paddle_baseline
105- state [ 2 ] = 1
106- state [ 3 ] = - 1
122+ state [ 2 ] = dx
123+ state [ 3 ] = dy
107124 state [ 4 ] = 100
108125
109126 const info = env . test ( state , [ 0 ] )
110127 expect ( info . done ) . toBeFalsy ( )
111128 expect ( info . reward ) . toBe ( 100 )
112129 expect ( info . state ) . toHaveLength ( 85 )
113- expect ( info . state [ 0 ] ) . toBe ( state [ 0 ] + 1 )
114- expect ( info . state [ 1 ] ) . toBe ( state [ 1 ] - 1 )
115- expect ( info . state [ 2 ] ) . toBe ( - 1 )
116- expect ( info . state [ 3 ] ) . toBe ( - 1 )
130+ expect ( info . state [ 0 ] ) . toBe ( state [ 0 ] + dx )
131+ expect ( info . state [ 1 ] ) . toBe ( state [ 1 ] + dy )
132+ expect ( info . state [ 2 ] ) . toBe ( - dx )
133+ expect ( info . state [ 3 ] ) . toBe ( dy )
117134 expect ( info . state [ 4 ] ) . toBe ( 100 )
118135 expect ( env . epoch ) . toBe ( 0 )
119136 } )
120137
138+ test ( 'hit paddle side top (no contact)' , ( ) => {
139+ const env = new BreakerRLEnvironment ( )
140+ const state = env . reset ( )
141+ state [ 0 ] = 100 - env . _paddle_size [ 0 ] / 2
142+ state [ 1 ] = env . _paddle_baseline + env . _paddle_size [ 1 ] / 2
143+ state [ 2 ] = - env . _ball_radius / Math . SQRT2
144+ state [ 3 ] = env . _ball_radius / Math . SQRT2
145+ state [ 4 ] = 100
146+
147+ const info = env . test ( state , [ 0 ] )
148+ expect ( info . done ) . toBeFalsy ( )
149+ expect ( info . reward ) . toBe ( 0.1 )
150+ expect ( info . state ) . toHaveLength ( 85 )
151+ expect ( env . epoch ) . toBe ( 0 )
152+ } )
153+
154+ test ( 'hit paddle side top (contact)' , ( ) => {
155+ const env = new BreakerRLEnvironment ( )
156+ const state = env . reset ( )
157+ state [ 0 ] = 100 - env . _paddle_size [ 0 ] / 2
158+ state [ 1 ] = env . _paddle_baseline + env . _paddle_size [ 1 ] / 2
159+ state [ 2 ] = - env . _ball_radius / 2
160+ state [ 3 ] = env . _ball_radius / 2
161+ state [ 4 ] = 100
162+
163+ const info = env . test ( state , [ 0 ] )
164+ expect ( info . done ) . toBeFalsy ( )
165+ expect ( info . reward ) . toBe ( 100 )
166+ expect ( info . state ) . toHaveLength ( 85 )
167+ expect ( env . epoch ) . toBe ( 0 )
168+ } )
169+
121170 test ( 'hit side left' , ( ) => {
122171 const env = new BreakerRLEnvironment ( )
123172 const state = env . reset ( )
0 commit comments