FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
JavaScript/Recursive/test/FloodFill.test.js at master · MMABSOUT/JavaScript · GitHub
MMABSOUT
/
JavaScript
Public
forked from
TheAlgorithms/JavaScript
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
JavaScript
/
Recursive
/
test
/
FloodFill.test.js
Copy path
More file actions
More file actions
Latest commit
History
History
History
103 lines (94 loc) · 3.24 KB
Breadcrumbs
JavaScript
/
Recursive
/
test
/
FloodFill.test.js
Copy path
File metadata and controls
103 lines (94 loc) · 3.24 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import
{
breadthFirstSearch
,
depthFirstSearch
}
from
'../FloodFill'
// some constants
const
black
=
[
0
,
0
,
0
]
const
green
=
[
0
,
255
,
0
]
const
violet
=
[
255
,
0
,
255
]
const
white
=
[
255
,
255
,
255
]
const
orange
=
[
255
,
128
,
0
]
describe
(
'FloodFill'
,
(
)
=>
{
it
(
'should calculate the correct colors using breadth-first approach'
,
(
)
=>
{
expect
(
testBreadthFirst
(
[
1
,
1
]
,
green
,
orange
,
[
1
,
1
]
)
)
.
toEqual
(
orange
)
expect
(
testBreadthFirst
(
[
1
,
1
]
,
green
,
orange
,
[
0
,
1
]
)
)
.
toEqual
(
violet
)
expect
(
testBreadthFirst
(
[
1
,
1
]
,
green
,
orange
,
[
6
,
4
]
)
)
.
toEqual
(
white
)
}
)
it
(
'should calculate the correct colors using depth-first approach'
,
(
)
=>
{
expect
(
testDepthFirst
(
[
1
,
1
]
,
green
,
orange
,
[
1
,
1
]
)
)
.
toEqual
(
orange
)
expect
(
testDepthFirst
(
[
1
,
1
]
,
green
,
orange
,
[
0
,
1
]
)
)
.
toEqual
(
violet
)
expect
(
testDepthFirst
(
[
1
,
1
]
,
green
,
orange
,
[
6
,
4
]
)
)
.
toEqual
(
white
)
}
)
}
)
describe
.
each
(
[
breadthFirstSearch
,
depthFirstSearch
]
)
(
'%o'
,
(
floodFillFun
)
=>
{
it
.
each
(
[
[
1
,
-
1
]
,
[
-
1
,
1
]
,
[
0
,
7
]
,
[
7
,
0
]
]
)
(
'throws for start position [%i, %i]'
,
(
location
)
=>
{
expect
(
(
)
=>
floodFillFun
(
generateTestRgbData
(
)
,
location
,
green
,
orange
)
)
.
toThrowError
(
)
}
)
}
)
/**
* Utility-function to test the function "breadthFirstSearch".
*
*
@param
fillLocation The start location on the image where the flood fill is applied.
*
@param
targetColor The old color to be replaced.
*
@param
replacementColor The new color to replace the old one.
*
@param
testLocation The location of the color to be checked.
*
@return
The color at testLocation.
*/
function
testBreadthFirst
(
fillLocation
,
targetColor
,
replacementColor
,
testLocation
)
{
const
rgbData
=
generateTestRgbData
(
)
breadthFirstSearch
(
rgbData
,
fillLocation
,
targetColor
,
replacementColor
)
return
rgbData
[
testLocation
[
0
]
]
[
testLocation
[
1
]
]
}
/**
* Utility-function to test the function "depthFirstSearch".
*
*
@param
fillLocation The start location on the image where the flood fill is applied.
*
@param
targetColor The old color to be replaced.
*
@param
replacementColor The new color to replace the old one.
*
@param
testLocation The location of the color to be checked.
*
@return
The color at testLocation.
*/
function
testDepthFirst
(
fillLocation
,
targetColor
,
replacementColor
,
testLocation
)
{
const
rgbData
=
generateTestRgbData
(
)
depthFirstSearch
(
rgbData
,
fillLocation
,
targetColor
,
replacementColor
)
return
rgbData
[
testLocation
[
0
]
]
[
testLocation
[
1
]
]
}
/**
* Generates the rgbData-matrix for the tests.
*
*
@return
example rgbData-matrix.
*/
function
generateTestRgbData
(
)
{
const
layout
=
[
[
violet
,
violet
,
green
,
green
,
black
,
green
,
green
]
,
[
violet
,
green
,
green
,
black
,
green
,
green
,
green
]
,
[
green
,
green
,
green
,
black
,
green
,
green
,
green
]
,
[
black
,
black
,
green
,
black
,
white
,
white
,
green
]
,
[
violet
,
violet
,
black
,
violet
,
violet
,
white
,
white
]
,
[
green
,
green
,
green
,
violet
,
violet
,
violet
,
violet
]
,
[
violet
,
violet
,
violet
,
violet
,
violet
,
violet
,
violet
]
]
// transpose layout-matrix so the x-index comes before the y-index
const
transposed
=
[
]
for
(
let
x
=
0
;
x
<
layout
[
0
]
.
length
;
x
++
)
{
transposed
[
x
]
=
[
]
for
(
let
y
=
0
;
y
<
layout
.
length
;
y
++
)
{
transposed
[
x
]
[
y
]
=
layout
[
y
]
[
x
]
}
}
return
transposed
}
Back
|
FazBrowse Home
|
New Git URL