Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
S
SWEN90006-A1-2018
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Abdul Mateen Ahmad Khan
SWEN90006-A1-2018
Commits
547bfd81
Commit
547bfd81
authored
Sep 2, 2018
by
Abdul Mateen Ahmad Khan
Browse files
Options
Downloads
Patches
Plain Diff
Update BoundaryTests.java
parent
c9ea59b8
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
test/swen90006/machine/BoundaryTests.java
+658
-20
658 additions, 20 deletions
test/swen90006/machine/BoundaryTests.java
with
658 additions
and
20 deletions
test/swen90006/machine/BoundaryTests.java
+
658
−
20
View file @
547bfd81
...
@@ -34,35 +34,673 @@ public class BoundaryTests
...
@@ -34,35 +34,673 @@ public class BoundaryTests
assertEquals
(
expected
,
actual
);
assertEquals
(
expected
,
actual
);
}
}
@Test
public
void
anotherTest
()
@Test
public
void
B1_1
()
{
{
List
<
String
>
list
=
new
ArrayList
<
String
>();
list
.
add
(
"a"
);
list
.
add
(
"b"
);
//the assertTrue method is used to check whether something holds.
// TEST FOR # OF INSTRUCTION 1 WITH RET.
assertTrue
(
list
.
contains
(
"a"
));
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"RET R1"
);
assertEquals
(
m
.
execute
(
lines1
),
0
);
}
}
//Test test opens a file and executes the machine
@Test
public
void
B1_2
()
@Test
public
void
aFileOpenTest
()
{
{
final
List
<
String
>
lines
=
readInstructions
(
"examples/array.s"
);
// TEST FOR # OF INSTRUCTION >1 WITH RET.
Machine
m
=
new
Machine
();
Machine
m
=
new
Machine
();
assertEquals
(
m
.
execute
(
lines
),
45
);
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R1 2"
);
lines1
.
add
(
"RET R1"
);
assertEquals
(
m
.
execute
(
lines1
),
2
);
}
}
//To test an exception, specify the expected exception after the @Test
@Test
(
expected
=
java
.
io
.
IO
Exception
.
class
)
@Test
(
expected
=
NoReturnValue
Exception
.
class
)
public
void
anExceptionTest
()
public
void
B1_3
()
throws
Throwable
throws
Throwable
{
{
throw
new
java
.
io
.
IOException
();
// TEST FOR # OF INSTRUCTION 1 WITH NO RET.
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"ADD R1 R2 R3"
);
m
.
execute
(
lines1
);
}
@Test
public
void
B2_1
()
{
// TEST FOR # OF INSTRUCTION >1 WITH ADD AND REGISTER VALUE VALID .
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R2 2"
);
lines1
.
add
(
"MOV R3 5"
);
lines1
.
add
(
"ADD R1 R2 R3"
);
lines1
.
add
(
"RET R1"
);
assertEquals
(
m
.
execute
(
lines1
),
7
);
}
@Test
public
void
B2_2
()
{
// TEST FOR # OF INSTRUCTION >1 WITH SUB AND REGISTER VALUE VALID .
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R2 2"
);
lines1
.
add
(
"MOV R3 5"
);
lines1
.
add
(
"SUB R1 R2 R3"
);
lines1
.
add
(
"RET R1"
);
assertEquals
(
m
.
execute
(
lines1
),
-
3
);
}
@Test
public
void
B2_3
()
{
// TEST FOR # OF INSTRUCTION >1 WITH MUL AND REGISTER VALUE VALID .
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R2 2"
);
lines1
.
add
(
"MOV R3 5"
);
lines1
.
add
(
"MUL R1 R2 R3"
);
lines1
.
add
(
"RET R1"
);
assertEquals
(
m
.
execute
(
lines1
),
10
);
}
@Test
public
void
B2_4
()
{
// TEST FOR # OF INSTRUCTION >1 WITH div AND REGISTER VALUE VALID .
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R2 10"
);
lines1
.
add
(
"MOV R3 5"
);
lines1
.
add
(
"DIV R1 R2 R3"
);
lines1
.
add
(
"RET R1"
);
assertEquals
(
m
.
execute
(
lines1
),
2
);
}
@Test
(
expected
=
InvalidInstructionException
.
class
)
public
void
B2_5
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION >1 WITH in valid insrtuction
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOVED R2 2"
);
lines1
.
add
(
"MOV R3 5"
);
lines1
.
add
(
"MUL R1 R2 R3"
);
lines1
.
add
(
"RET R1"
);
m
.
execute
(
lines1
);
}
@Test
(
expected
=
InvalidInstructionException
.
class
)
public
void
B3_1
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION >1 WITH ADD AND REGISTER VALUE INVALID .
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"ADD R-1 R2 R3"
);
lines1
.
add
(
"RET R1"
);
m
.
execute
(
lines1
);
}
@Test
(
expected
=
InvalidInstructionException
.
class
)
public
void
B3_2
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION >1 WITH ADD AND REGISTER VALUE INVALID .
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"ADD R32 R2 R3"
);
lines1
.
add
(
"RET R1"
);
m
.
execute
(
lines1
);
}
@Test
public
void
B3_3
()
{
// TEST FOR # OF INSTRUCTION >1 WITH ADD AND REGISTER VALUE VALID .
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"ADD R0 R2 R3"
);
lines1
.
add
(
"RET R0"
);
assertEquals
(
m
.
execute
(
lines1
),
0
);
}
@Test
public
void
B3_4
()
{
// TEST FOR # OF INSTRUCTION >1 WITH ADD AND REGISTER VALUE VALID .
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"ADD R31 R2 R3"
);
lines1
.
add
(
"RET R31"
);
assertEquals
(
m
.
execute
(
lines1
),
0
);
}
@Test
(
expected
=
InvalidInstructionException
.
class
)
public
void
B4_1
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION >1 WITH MOV AND REGISTER VALUE INVALID AND VAL VALID
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R32 34"
);
m
.
execute
(
lines1
);
}
@Test
public
void
B4_2
()
{
// TEST FOR # OF INSTRUCTION >1 WITH MOV AND REGISTER VALUE VALID AND VAL VALID ON POINT FOR VAL
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R31 -65535"
);
lines1
.
add
(
"RET R31"
);
assertEquals
(
m
.
execute
(
lines1
),
-
65535
);
}
@Test
public
void
B4_3
()
{
// TEST FOR # OF INSTRUCTION >1 WITH MOV AND REGISTER VALUE VALID AND VAL VALID ON POINT FOR VAL
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R31 65535"
);
lines1
.
add
(
"RET R31"
);
assertEquals
(
m
.
execute
(
lines1
),
65535
);
}
@Test
(
expected
=
InvalidInstructionException
.
class
)
public
void
B4_4
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION >1 WITH MOV AND REGISTER VALUE inVALID AND VAL IN VALID OFF POINT FOR VAL
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R31 -65536"
);
lines1
.
add
(
"RET R31"
);
m
.
execute
(
lines1
);
}
@Test
(
expected
=
InvalidInstructionException
.
class
)
public
void
B4_5
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION >1 WITH MOV AND REGISTER VALUE inVALID AND VAL IN VALID OFF POINT FOR VAL
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R31 65536"
);
lines1
.
add
(
"RET R31"
);
m
.
execute
(
lines1
);
}
@Test
(
expected
=
InvalidInstructionException
.
class
)
public
void
B5_1
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION >1 WITH STR AND REGISTER VALUE INVALID OFF POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"STR R32 R45 -655"
);
lines1
.
add
(
"RET R31"
);
m
.
execute
(
lines1
);
}
@Test
(
expected
=
InvalidInstructionException
.
class
)
public
void
B5_2
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION >1 WITH STR AND REGISTER VALUE VALID AND VAL INVALID OFF POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"STR R31 R4 -65536"
);
lines1
.
add
(
"RET R31"
);
m
.
execute
(
lines1
);
}
@Test
(
expected
=
InvalidInstructionException
.
class
)
public
void
B5_3
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION >1 WITH STR AND REGISTER VALUE VALID AND VAL INVALID OFF POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"STR R31 R4 65536"
);
lines1
.
add
(
"RET R31"
);
m
.
execute
(
lines1
);
}
@Test
public
void
B5_4
()
{
// TEST FOR # OF INSTRUCTION >1 WITH STR AND REGISTER VALUE VALID AND VAL VALID;
//TESTING LDR FUNCTIONALITY & b+v inside the given range ON POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R1 5"
);
lines1
.
add
(
"MOV R4 65534"
);
lines1
.
add
(
"STR R4 1 R1"
);
lines1
.
add
(
"LDR R2 R4 1"
);
lines1
.
add
(
"RET R2"
);
assertEquals
(
m
.
execute
(
lines1
),
5
);
}
@Test
public
void
B5_5
()
{
// TEST FOR # OF INSTRUCTION >1 WITH STR AND REGISTER VALUE VALID AND VAL VALID;
//TESTING LDR FUNCTIONALITY & b+v inside the given range ON POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R1 5"
);
lines1
.
add
(
"MOV R4 2"
);
lines1
.
add
(
"STR R4 -2 R1"
);
lines1
.
add
(
"LDR R2 R4 -2"
);
lines1
.
add
(
"RET R2"
);
assertEquals
(
m
.
execute
(
lines1
),
5
);
}
@Test
public
void
B5_6
()
{
// TEST FOR # OF INSTRUCTION >1 WITH STR AND REGISTER VALUE VALID AND VAL VALID
//TESTING LDR FUNCTIONALITY & b+v OUT SIDE the given range OFF POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R1 5"
);
lines1
.
add
(
"MOV R4 65535"
);
lines1
.
add
(
"STR R4 1 R1"
);
lines1
.
add
(
"LDR R2 R4 1"
);
lines1
.
add
(
"RET R2"
);
assertEquals
(
m
.
execute
(
lines1
),
0
);
}
@Test
public
void
B5_7
()
{
// TEST FOR # OF INSTRUCTION >1 WITH STR AND REGISTER VALUE VALID AND VAL VALID
//TESTING LDR FUNCTIONALITY & b+v OUT SIDE the given range OFF POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R1 5"
);
lines1
.
add
(
"MOV R4 -2"
);
lines1
.
add
(
"STR R4 1 R1"
);
lines1
.
add
(
"LDR R2 R4 1"
);
lines1
.
add
(
"RET R2"
);
assertEquals
(
m
.
execute
(
lines1
),
0
);
}
@Test
(
timeout
=
5000
)
public
void
b6_1
()
{
// TEST FOR # OF INSTRUCTION >1 WITH JMP vAL=1 ON POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" MOV R1 1"
);
lines1
.
add
(
" JMP 1"
);
lines1
.
add
(
" MOV R1 2"
);
lines1
.
add
(
"RET R1"
);
assertEquals
(
m
.
execute
(
lines1
),
2
);
}
@Test
(
timeout
=
5000
)
public
void
b6_8
()
{
// TEST FOR # OF INSTRUCTION >1 WITH JMP vAL=O ON POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" MOV R1 1"
);
lines1
.
add
(
" JMP 0"
);
lines1
.
add
(
" MOV R1 2"
);
lines1
.
add
(
"RET R1"
);
assertEquals
(
m
.
execute
(
lines1
),
2
);
}
@Test
(
timeout
=
5000
)
public
void
b6_2
()
{
// TEST FOR # OF INSTRUCTION >1 WITH JMP vAL=1
//TESTING FUNCTIONALITY & VAL + PC IN SIDE the given range ON POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" MOV R1 1"
);
lines1
.
add
(
" JMP 2"
);
lines1
.
add
(
" MOV R1 3"
);
lines1
.
add
(
" MOV R1 2"
);
lines1
.
add
(
"RET R1"
);
assertEquals
(
m
.
execute
(
lines1
),
2
);
}
@Test
(
timeout
=
5000
)
public
void
b6_3
()
{
// TEST FOR # OF INSTRUCTION >1 WITH JMP AND VAL +PC IS WITH IN THE RANGE
//TESTING FUNCTIONALITY & VAL + PC IN SIDE the given range ON POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" MOV R1 1"
);
lines1
.
add
(
" MOV R2 2"
);
lines1
.
add
(
" JMP 2"
);
lines1
.
add
(
"MOV R2 5"
);
lines1
.
add
(
"MOV R4 8"
);
lines1
.
add
(
"RET R4"
);
assertEquals
(
m
.
execute
(
lines1
),
8
);
}
@Test
(
timeout
=
5000
,
expected
=
NoReturnValueException
.
class
)
public
void
B6_4
()
throws
Throwable
{
//TESTING FUNCTIONALITY & VAL + PC OUT SIDE the given range OFF POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" MOV R1 1"
);
lines1
.
add
(
" MOV R2 2"
);
lines1
.
add
(
" JMP -3"
);
lines1
.
add
(
"RET R4"
);
m
.
execute
(
lines1
);
}
@Test
(
timeout
=
5000
,
expected
=
NoReturnValueException
.
class
)
public
void
B6_5
()
throws
Throwable
{
//TESTING FUNCTIONALITY & VAL + PC OUT SIDE the given range OFF POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" MOV R4 2"
);
lines1
.
add
(
" JMP 5"
);
lines1
.
add
(
" MOV R5 2"
);
lines1
.
add
(
" MOV R6 2"
);
lines1
.
add
(
" MOV R7 2"
);
lines1
.
add
(
"RET R4"
);
m
.
execute
(
lines1
);
}
@Test
(
timeout
=
5000
,
expected
=
InvalidInstructionException
.
class
)
public
void
B7_1
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION >1 WITH REGISTER VAL IN VALID OFF POINT
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" JZ R32 1"
);
lines1
.
add
(
" MOV R1 2"
);
lines1
.
add
(
"RET R34"
);
m
.
execute
(
lines1
)
;
}
@Test
(
timeout
=
5000
)
public
void
b7_3
()
{
// TEST FOR REGISTER 0 FOR JZ
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" MOV R1 0"
);
lines1
.
add
(
" MOV R2 2"
);
lines1
.
add
(
" JZ R1 2"
);
lines1
.
add
(
" MOV R1 2"
);
lines1
.
add
(
" MOV R2 3"
);
lines1
.
add
(
"RET R1"
);
lines1
.
add
(
"RET R2"
);
assertEquals
(
m
.
execute
(
lines1
),
0
);
}
@Test
(
timeout
=
5000
)
public
void
b7_4
()
{
// TEST FOR REGISTER != 0 FOR JZ
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" MOV R2 2"
);
lines1
.
add
(
" JZ R2 2"
);
lines1
.
add
(
" MOV R1 1"
);
lines1
.
add
(
" MOV R2 3"
);
lines1
.
add
(
"RET R1"
);
assertEquals
(
m
.
execute
(
lines1
),
1
);
}
@Test
(
timeout
=
5000
,
expected
=
NoReturnValueException
.
class
)
public
void
B7_5
()
throws
Throwable
{
// TEST FOR JZ where pc is outside the given range .. off point
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
"MOV R1 0"
);
lines1
.
add
(
" MOV R2 2"
);
lines1
.
add
(
" JZ R1 -3"
);
lines1
.
add
(
"RET R4"
);
m
.
execute
(
lines1
);
}
@Test
(
timeout
=
5000
,
expected
=
NoReturnValueException
.
class
)
public
void
B7_6
()
throws
Throwable
{
// TEST FOR JZ where pc is outside the given range .. off point
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" MOV R1 0"
);
lines1
.
add
(
" JZ R1 5"
);
lines1
.
add
(
" MOV R5 2"
);
lines1
.
add
(
" MOV R6 2"
);
lines1
.
add
(
" MOV R7 2"
);
lines1
.
add
(
"RET R4"
);
m
.
execute
(
lines1
);
}
@Test
(
timeout
=
5000
,
expected
=
NoReturnValueException
.
class
)
public
void
B8_1
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION WITH NO RET.
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" MOV R1 1"
);
lines1
.
add
(
" JZ R1 2"
);
lines1
.
add
(
" MOV R5 2"
);
lines1
.
add
(
" MOV R6 2"
);
lines1
.
add
(
" MOV R7 2"
);
m
.
execute
(
lines1
);
}
@Test
(
timeout
=
5000
)
public
void
B8_2
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION WITH 1 RET.
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" MOV R1 1"
);
lines1
.
add
(
" JZ R1 2"
);
lines1
.
add
(
" MOV R5 2"
);
lines1
.
add
(
" RET R4"
);
assertEquals
(
m
.
execute
(
lines1
),
0
);
m
.
execute
(
lines1
);
}
@Test
(
timeout
=
5000
,
expected
=
NoReturnValueException
.
class
)
public
void
B8_3
()
throws
Throwable
{
// TEST FOR # OF INSTRUCTION WITH 2 RET.
Machine
m
=
new
Machine
();
final
List
<
String
>
lines1
=
new
ArrayList
<>();
lines1
.
add
(
" MOV R1 1"
);
lines1
.
add
(
" JZ R1 2"
);
lines1
.
add
(
" MOV R3 2"
);
lines1
.
add
(
" RET R4"
);
lines1
.
add
(
" RET R3"
);
assertEquals
(
m
.
execute
(
lines1
),
0
);
}
}
//This test should fail.
//To provide additional feedback when a test fails, an error message
//can be included
@Test
public
void
aFailedTest
()
@Test
public
void
aFailedTest
()
{
{
//include a message for better feedback
//include a message for better feedback
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment