@@ -7,6 +7,7 @@ export default class Actions extends React.PureComponent {
7
7
super ( props ) ;
8
8
this . state = {
9
9
prob : props . prob ,
10
+ outputs : props . outputs ,
10
11
tests : props . tests ,
11
12
runexamples : props . runexamples
12
13
}
@@ -15,12 +16,14 @@ export default class Actions extends React.PureComponent {
15
16
componentWillReceiveProps ( nextProps ) {
16
17
this . setState ( {
17
18
prob : nextProps . prob ,
19
+ outputs : nextProps . outputs ,
18
20
tests : nextProps . tests ,
19
21
runexamples : nextProps . runexamples
20
22
} ) ;
21
23
}
22
24
23
25
change ( ele ) {
26
+ if ( ele == null ) return
24
27
ele . target . classList . toggle ( "icon-chevron-right" )
25
28
ele . target . classList . toggle ( "icon-chevron-down" )
26
29
var val = ele . target . parentElement . nextElementSibling . style . display
@@ -33,6 +36,7 @@ export default class Actions extends React.PureComponent {
33
36
34
37
togglesubmit ( ele ) {
35
38
var parent = ele . target . parentElement
39
+ if ( parent == null ) return
36
40
for ( var i = 1 ; i < parent . children . length ; i ++ ) {
37
41
var child = parent . children [ i ]
38
42
var val = child . style . display
@@ -44,6 +48,22 @@ export default class Actions extends React.PureComponent {
44
48
}
45
49
}
46
50
51
+ toggleverdict ( ele ) {
52
+ var sb = ele . target . nextElementSibling
53
+ if ( sb == null ) return
54
+ if ( sb . classList [ 0 ] != "comparision" && sb . classList [ 0 ] != "errordetails" ) return
55
+ var val = sb . style . display
56
+ if ( val != "none" ) {
57
+ sb . style . display = "none"
58
+ } else {
59
+ if ( sb . classList [ 0 ] == "comparision" ) {
60
+ sb . style . display = "flex"
61
+ } else {
62
+ sb . style . display = "block"
63
+ }
64
+ }
65
+ }
66
+
47
67
render ( ) {
48
68
return (
49
69
< div className = "actions" >
@@ -56,9 +76,26 @@ export default class Actions extends React.PureComponent {
56
76
</ div >
57
77
< div className = "down" style = { { display : "none" } } >
58
78
{ this . state . tests && this . state . tests . map ( test => {
79
+ if ( test . error ) {
80
+ if ( test . stdout . length > 0 && test . stderr . length > 0 ) moredetails = < div className = "errordetails" > < pre > { test . stdout } < br /> { test . stderr } </ pre > </ div >
81
+ else if ( test . stdout . length > 0 || test . stderr . length > 0 ) moredetails = < div className = "errordetails" > < pre > { test . stdout } { test . stderr } </ pre > </ div >
82
+ else moredetails = null
83
+ } else {
84
+ if ( test . icon == "x" ) moredetails = (
85
+ < div className = "comparision" style = { { display : "flex" } } >
86
+ < div className = "outbox" >
87
+ < pre > expected< br /> { this . state . outputs [ test . n ] } </ pre >
88
+ </ div >
89
+ < div className = "outbox" >
90
+ < pre > output< br /> { test . stdout } </ pre >
91
+ </ div >
92
+ </ div >
93
+ )
94
+ else moredetails = null
95
+ }
59
96
return ( < div className = "verdict" >
60
- < div className = "show-verdict" > < span > example { test . n + 1 } </ span > < i className = { "icon-" + test . icon } > </ i > </ div >
61
- < div className = "errordetails" > < pre > { test . stderr } </ pre > </ div >
97
+ < div className = "show-verdict" onClick = { this . toggleverdict } > < span > example { test . n + 1 } </ span > < i className = { "icon-" + test . icon } > </ i > </ div >
98
+ { moredetails }
62
99
</ div > )
63
100
} ) }
64
101
</ div >
0 commit comments