finish assignment 3
This commit is contained in:
7 files changed
+272
-49
No files matched your search
+24
-18
@@ -3,14 +3,14 @@ package ca.bcit.comp1510.assignment3.q2;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
class TestTimeSheet {
|
class TestTimesheet {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testGetEmpNum() {
|
void testGetEmpNum() {
|
||||||
TimeSheet sheet = new TimeSheet(
|
Timesheet sheet = new Timesheet(
|
||||||
"984757",
|
"984757",
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
@@ -19,8 +19,11 @@ class TestTimeSheet {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testGetEndWeek() {
|
void testGetEndWeek() {
|
||||||
LocalDate now = LocalDate.now();
|
final int year = 2025;
|
||||||
TimeSheet sheet = new TimeSheet(
|
final int month = 4;
|
||||||
|
final int day = 4;
|
||||||
|
LocalDate now = LocalDate.of(year, month, day);
|
||||||
|
Timesheet sheet = new Timesheet(
|
||||||
"",
|
"",
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
@@ -29,7 +32,7 @@ class TestTimeSheet {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testGetDetails() {
|
void testGetDetails() {
|
||||||
TimeSheet sheet = new TimeSheet("123", null);
|
Timesheet sheet = new Timesheet("123", null);
|
||||||
|
|
||||||
final float hours1 = 2;
|
final float hours1 = 2;
|
||||||
final float hours2 = 32 / 10;
|
final float hours2 = 32 / 10;
|
||||||
@@ -37,19 +40,19 @@ class TestTimeSheet {
|
|||||||
|
|
||||||
final int id3 = 3;
|
final int id3 = 3;
|
||||||
|
|
||||||
TimeSheetRow r1 = new TimeSheetRow(
|
TimesheetRow r1 = new TimesheetRow(
|
||||||
1,
|
1,
|
||||||
"assignment1",
|
"assignment1",
|
||||||
hours1, hours2, hours3
|
hours1, hours2, hours3
|
||||||
);
|
);
|
||||||
|
|
||||||
TimeSheetRow r2 = new TimeSheetRow(
|
TimesheetRow r2 = new TimesheetRow(
|
||||||
2,
|
2,
|
||||||
"assignment2",
|
"assignment2",
|
||||||
hours3, hours2, hours1
|
hours3, hours2, hours1
|
||||||
);
|
);
|
||||||
|
|
||||||
TimeSheetRow r3 = new TimeSheetRow(
|
TimesheetRow r3 = new TimesheetRow(
|
||||||
id3,
|
id3,
|
||||||
"assignment3",
|
"assignment3",
|
||||||
hours2, hours3, hours1
|
hours2, hours3, hours1
|
||||||
@@ -59,7 +62,7 @@ class TestTimeSheet {
|
|||||||
sheet.addRow(r2);
|
sheet.addRow(r2);
|
||||||
sheet.addRow(r3);
|
sheet.addRow(r3);
|
||||||
|
|
||||||
List<TimeSheetRow> correct = new ArrayList<TimeSheetRow>();
|
List<TimesheetRow> correct = new ArrayList<TimesheetRow>();
|
||||||
correct.add(r1);
|
correct.add(r1);
|
||||||
correct.add(r2);
|
correct.add(r2);
|
||||||
correct.add(r3);
|
correct.add(r3);
|
||||||
@@ -69,7 +72,7 @@ class TestTimeSheet {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testSetEmpNum() {
|
void testSetEmpNum() {
|
||||||
TimeSheet sheet = new TimeSheet(
|
Timesheet sheet = new Timesheet(
|
||||||
"",
|
"",
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
@@ -80,11 +83,14 @@ class TestTimeSheet {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testSetEndWeek() {
|
void testSetEndWeek() {
|
||||||
TimeSheet sheet = new TimeSheet(
|
Timesheet sheet = new Timesheet(
|
||||||
"",
|
"",
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
LocalDate now = LocalDate.now();
|
final int year = 2025;
|
||||||
|
final int month = 4;
|
||||||
|
final int day = 4;
|
||||||
|
LocalDate now = LocalDate.of(year, month, day);
|
||||||
|
|
||||||
sheet.setEndWeek(now);
|
sheet.setEndWeek(now);
|
||||||
|
|
||||||
@@ -93,13 +99,13 @@ class TestTimeSheet {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testToString() {
|
void testToString() {
|
||||||
TimeSheet sheet = new TimeSheet("123", null);
|
Timesheet sheet = new Timesheet("123", null);
|
||||||
|
|
||||||
final float hours1 = 2;
|
final float hours1 = 2;
|
||||||
final float hours2 = 32 / 10;
|
final float hours2 = 32 / 10;
|
||||||
final float hours3 = 38 / 10;
|
final float hours3 = 38 / 10;
|
||||||
|
|
||||||
TimeSheetRow r1 = new TimeSheetRow(
|
TimesheetRow r1 = new TimesheetRow(
|
||||||
1,
|
1,
|
||||||
"assignment1",
|
"assignment1",
|
||||||
hours1, hours2, hours3
|
hours1, hours2, hours3
|
||||||
@@ -114,13 +120,13 @@ class TestTimeSheet {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAddRow() {
|
void testAddRow() {
|
||||||
TimeSheet sheet = new TimeSheet("123", null);
|
Timesheet sheet = new Timesheet("123", null);
|
||||||
|
|
||||||
final float hours1 = 2;
|
final float hours1 = 2;
|
||||||
final float hours2 = 32 / 10;
|
final float hours2 = 32 / 10;
|
||||||
final float hours3 = 38 / 10;
|
final float hours3 = 38 / 10;
|
||||||
|
|
||||||
TimeSheetRow r1 = new TimeSheetRow(
|
TimesheetRow r1 = new TimesheetRow(
|
||||||
1,
|
1,
|
||||||
"assignment1",
|
"assignment1",
|
||||||
hours1, hours2, hours3
|
hours1, hours2, hours3
|
||||||
@@ -128,7 +134,7 @@ class TestTimeSheet {
|
|||||||
|
|
||||||
sheet.addRow(r1);
|
sheet.addRow(r1);
|
||||||
|
|
||||||
List<TimeSheetRow> correct = new ArrayList<TimeSheetRow>();
|
List<TimesheetRow> correct = new ArrayList<TimesheetRow>();
|
||||||
correct.add(r1);
|
correct.add(r1);
|
||||||
|
|
||||||
assertEquals(sheet.getDetails(), correct);
|
assertEquals(sheet.getDetails(), correct);
|
||||||
+15
-14
@@ -1,17 +1,18 @@
|
|||||||
package ca.bcit.comp1510.assignment3.q2;
|
package ca.bcit.comp1510.assignment3.q2;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
class TestTimeSheetRow {
|
class TestTimesheetRow {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testEmptyConstructor() {
|
void testEmptyConstructor() {
|
||||||
TimeSheetRow row = new TimeSheetRow();
|
TimesheetRow row = new TimesheetRow();
|
||||||
|
|
||||||
boolean c1 = row.getProject() == 0;
|
boolean c1 = row.getProject() == 0;
|
||||||
boolean c2 = row.getWorkPackage() == "";
|
boolean c2 = row.getWorkPackage().equals("");
|
||||||
boolean c3 = row.getHours() == 0;
|
boolean c3 = row.getHours() == 0;
|
||||||
|
|
||||||
assertTrue(c1 && c2 && c3);
|
assertTrue(c1 && c2 && c3);
|
||||||
@@ -22,7 +23,7 @@ class TestTimeSheetRow {
|
|||||||
final int id = 984757;
|
final int id = 984757;
|
||||||
final String pack = "abc2xyz";
|
final String pack = "abc2xyz";
|
||||||
|
|
||||||
TimeSheetRow row = new TimeSheetRow(
|
TimesheetRow row = new TimesheetRow(
|
||||||
id,
|
id,
|
||||||
pack,
|
pack,
|
||||||
0
|
0
|
||||||
@@ -39,7 +40,7 @@ class TestTimeSheetRow {
|
|||||||
final int id = 984757;
|
final int id = 984757;
|
||||||
final String pack = "abc2xyz";
|
final String pack = "abc2xyz";
|
||||||
|
|
||||||
TimeSheetRow row = new TimeSheetRow(
|
TimesheetRow row = new TimesheetRow(
|
||||||
id,
|
id,
|
||||||
pack,
|
pack,
|
||||||
0
|
0
|
||||||
@@ -53,7 +54,7 @@ class TestTimeSheetRow {
|
|||||||
final int id = 984757;
|
final int id = 984757;
|
||||||
final String pack = "abc2xyz";
|
final String pack = "abc2xyz";
|
||||||
|
|
||||||
TimeSheetRow row = new TimeSheetRow(
|
TimesheetRow row = new TimesheetRow(
|
||||||
id,
|
id,
|
||||||
pack,
|
pack,
|
||||||
0
|
0
|
||||||
@@ -71,7 +72,7 @@ class TestTimeSheetRow {
|
|||||||
final float hours2 = 32 / 10;
|
final float hours2 = 32 / 10;
|
||||||
final float hours3 = 38 / 10;
|
final float hours3 = 38 / 10;
|
||||||
|
|
||||||
TimeSheetRow row = new TimeSheetRow(
|
TimesheetRow row = new TimesheetRow(
|
||||||
id,
|
id,
|
||||||
pack,
|
pack,
|
||||||
hours1, hours2, hours3
|
hours1, hours2, hours3
|
||||||
@@ -84,7 +85,7 @@ class TestTimeSheetRow {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testSetProject() {
|
void testSetProject() {
|
||||||
TimeSheetRow row = new TimeSheetRow();
|
TimesheetRow row = new TimesheetRow();
|
||||||
|
|
||||||
final int id = 984757;
|
final int id = 984757;
|
||||||
|
|
||||||
@@ -95,7 +96,7 @@ class TestTimeSheetRow {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testSetWorkPackage() {
|
void testSetWorkPackage() {
|
||||||
TimeSheetRow row = new TimeSheetRow();
|
TimesheetRow row = new TimesheetRow();
|
||||||
|
|
||||||
final String pack = "abc2xyz";
|
final String pack = "abc2xyz";
|
||||||
|
|
||||||
@@ -106,7 +107,7 @@ class TestTimeSheetRow {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testSetHours() {
|
void testSetHours() {
|
||||||
TimeSheetRow row = new TimeSheetRow();
|
TimesheetRow row = new TimesheetRow();
|
||||||
|
|
||||||
final long hours = 12345678;
|
final long hours = 12345678;
|
||||||
|
|
||||||
@@ -124,7 +125,7 @@ class TestTimeSheetRow {
|
|||||||
final float hours2 = 32 / 10;
|
final float hours2 = 32 / 10;
|
||||||
final float hours3 = 38 / 10;
|
final float hours3 = 38 / 10;
|
||||||
|
|
||||||
TimeSheetRow row = new TimeSheetRow(
|
TimesheetRow row = new TimesheetRow(
|
||||||
id,
|
id,
|
||||||
pack,
|
pack,
|
||||||
hours1, hours2, hours3
|
hours1, hours2, hours3
|
||||||
@@ -145,7 +146,7 @@ class TestTimeSheetRow {
|
|||||||
final float hours2 = 32 / 10;
|
final float hours2 = 32 / 10;
|
||||||
final float hours3 = 38 / 10;
|
final float hours3 = 38 / 10;
|
||||||
|
|
||||||
TimeSheetRow row = new TimeSheetRow(
|
TimesheetRow row = new TimesheetRow(
|
||||||
id,
|
id,
|
||||||
pack,
|
pack,
|
||||||
hours1, hours2, hours3
|
hours1, hours2, hours3
|
||||||
@@ -163,7 +164,7 @@ class TestTimeSheetRow {
|
|||||||
final float hours2 = 32 / 10;
|
final float hours2 = 32 / 10;
|
||||||
final float hours3 = 38 / 10;
|
final float hours3 = 38 / 10;
|
||||||
|
|
||||||
TimeSheetRow row = new TimeSheetRow(
|
TimesheetRow row = new TimesheetRow(
|
||||||
id,
|
id,
|
||||||
pack,
|
pack,
|
||||||
hours1, hours2, hours3
|
hours1, hours2, hours3
|
||||||
+14
-13
@@ -6,11 +6,12 @@ import java.util.List;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TimeSheet data.
|
* TimeSheet stores the amount of hours worked
|
||||||
|
* during a given week period for an employee.
|
||||||
* @author Braeden Sowinski
|
* @author Braeden Sowinski
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
*/
|
*/
|
||||||
public class TimeSheet {
|
public class Timesheet {
|
||||||
|
|
||||||
/** empNum is employee number. */
|
/** empNum is employee number. */
|
||||||
private String empNum;
|
private String empNum;
|
||||||
@@ -19,15 +20,15 @@ public class TimeSheet {
|
|||||||
private LocalDate endWeek;
|
private LocalDate endWeek;
|
||||||
|
|
||||||
/** details of TimeSheetRows. */
|
/** details of TimeSheetRows. */
|
||||||
private List<TimeSheetRow> details;
|
private List<TimesheetRow> details;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TimeSheet no-argument constructor.
|
* TimeSheet no-argument constructor.
|
||||||
*/
|
*/
|
||||||
public TimeSheet() {
|
public Timesheet() {
|
||||||
this.empNum = "";
|
this.empNum = "";
|
||||||
this.endWeek = null;
|
this.endWeek = null;
|
||||||
this.details = new ArrayList<TimeSheetRow>();
|
this.details = new ArrayList<TimesheetRow>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,10 +36,10 @@ public class TimeSheet {
|
|||||||
* @param empNum string of employee number
|
* @param empNum string of employee number
|
||||||
* @param endWeek date
|
* @param endWeek date
|
||||||
*/
|
*/
|
||||||
public TimeSheet(String empNum, LocalDate endWeek) {
|
public Timesheet(String empNum, LocalDate endWeek) {
|
||||||
this.empNum = empNum;
|
this.empNum = empNum;
|
||||||
this.endWeek = endWeek;
|
this.endWeek = endWeek;
|
||||||
this.details = new ArrayList<TimeSheetRow>();
|
this.details = new ArrayList<TimesheetRow>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -61,7 +62,7 @@ public class TimeSheet {
|
|||||||
* getDetails.
|
* getDetails.
|
||||||
* @return details List of TimeSheetRow
|
* @return details List of TimeSheetRow
|
||||||
*/
|
*/
|
||||||
public List<TimeSheetRow> getDetails() {
|
public List<TimesheetRow> getDetails() {
|
||||||
return this.details;
|
return this.details;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,7 +104,7 @@ public class TimeSheet {
|
|||||||
* addRow to details array.
|
* addRow to details array.
|
||||||
* @param row TimeSheetRow
|
* @param row TimeSheetRow
|
||||||
*/
|
*/
|
||||||
public void addRow(TimeSheetRow row) {
|
public void addRow(TimesheetRow row) {
|
||||||
this.details.add(row);
|
this.details.add(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,7 +113,7 @@ public class TimeSheet {
|
|||||||
* @param args unused
|
* @param args unused
|
||||||
*/
|
*/
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
TimeSheet sheet = new TimeSheet();
|
Timesheet sheet = new Timesheet();
|
||||||
|
|
||||||
final float hours1 = 2;
|
final float hours1 = 2;
|
||||||
final float hours2 = 32 / 10;
|
final float hours2 = 32 / 10;
|
||||||
@@ -120,19 +121,19 @@ public class TimeSheet {
|
|||||||
|
|
||||||
final int id3 = 3;
|
final int id3 = 3;
|
||||||
|
|
||||||
sheet.addRow(new TimeSheetRow(
|
sheet.addRow(new TimesheetRow(
|
||||||
1,
|
1,
|
||||||
"assignment1",
|
"assignment1",
|
||||||
hours1, hours2, hours3
|
hours1, hours2, hours3
|
||||||
));
|
));
|
||||||
|
|
||||||
sheet.addRow(new TimeSheetRow(
|
sheet.addRow(new TimesheetRow(
|
||||||
2,
|
2,
|
||||||
"assignment2",
|
"assignment2",
|
||||||
hours3, hours2, hours1
|
hours3, hours2, hours1
|
||||||
));
|
));
|
||||||
|
|
||||||
sheet.addRow(new TimeSheetRow(
|
sheet.addRow(new TimesheetRow(
|
||||||
id3,
|
id3,
|
||||||
"assignment3",
|
"assignment3",
|
||||||
hours2, hours3, hours1
|
hours2, hours3, hours1
|
||||||
+5
-4
@@ -1,11 +1,12 @@
|
|||||||
package ca.bcit.comp1510.assignment3.q2;
|
package ca.bcit.comp1510.assignment3.q2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TimeSheetRow is a row of TimeSheet.
|
* TimeSheetRow contains hourly information
|
||||||
|
* for a given week.
|
||||||
* @author Braeden Sowinski
|
* @author Braeden Sowinski
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
*/
|
*/
|
||||||
public class TimeSheetRow {
|
public class TimesheetRow {
|
||||||
|
|
||||||
/** MASK of bits for days of week represented inside hours long. */
|
/** MASK of bits for days of week represented inside hours long. */
|
||||||
private static final long[] MASK = {
|
private static final long[] MASK = {
|
||||||
@@ -43,7 +44,7 @@ public class TimeSheetRow {
|
|||||||
/**
|
/**
|
||||||
* TimeSheetRow no-argument constructor.
|
* TimeSheetRow no-argument constructor.
|
||||||
*/
|
*/
|
||||||
public TimeSheetRow() {
|
public TimesheetRow() {
|
||||||
this.project = 0;
|
this.project = 0;
|
||||||
this.workPackage = "";
|
this.workPackage = "";
|
||||||
this.hours = 0;
|
this.hours = 0;
|
||||||
@@ -55,7 +56,7 @@ public class TimeSheetRow {
|
|||||||
* @param workPackage String
|
* @param workPackage String
|
||||||
* @param hours float...
|
* @param hours float...
|
||||||
*/
|
*/
|
||||||
public TimeSheetRow(int projectNumber, String workPackage, float... hours) {
|
public TimesheetRow(int projectNumber, String workPackage, float... hours) {
|
||||||
this.project = projectNumber;
|
this.project = projectNumber;
|
||||||
this.workPackage = workPackage;
|
this.workPackage = workPackage;
|
||||||
|
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
package ca.bcit.comp1510.assignment3.q3;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MIXChar represents a MIX Character.
|
||||||
|
* @author Braeden Sowinski
|
||||||
|
* @version 1.0.0
|
||||||
|
*/
|
||||||
|
public class MIXChar {
|
||||||
|
|
||||||
|
/** MIX character array. */
|
||||||
|
public static final char[] CHARS = {
|
||||||
|
' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'Δ', 'J',
|
||||||
|
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'Σ', 'Π', 'S', 'T',
|
||||||
|
'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5',
|
||||||
|
'6', '7', '8', '9', '.', ',', '(', ')', '+', '-', '*', '/',
|
||||||
|
'=', '$', '<', '>', '@', ';', ':', '\''
|
||||||
|
};
|
||||||
|
|
||||||
|
/** character. */
|
||||||
|
private final int value;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MixChar constructor.
|
||||||
|
* @param c character
|
||||||
|
*/
|
||||||
|
public MIXChar(char c) throws IllegalArgumentException {
|
||||||
|
if (!isMIXChar(c)) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"Invalid MIX Character provided."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
this.value = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* isMIXChar check if a given character
|
||||||
|
* is a valid MIX character.
|
||||||
|
* @param c char to check
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
static boolean isMIXChar(char c) {
|
||||||
|
for (int i = 0; i < CHARS.length; i++) {
|
||||||
|
if (CHARS[i] == c) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* toChar converts this MIXChar character
|
||||||
|
* to corresponding Java char.
|
||||||
|
* @return character
|
||||||
|
*/
|
||||||
|
public char toChar() {
|
||||||
|
return (char) this.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* convert MIXChar array to string.
|
||||||
|
* @param c MIXChar array.
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
static String toString(MIXChar[] c) {
|
||||||
|
char[] chars = new char[c.length];
|
||||||
|
for (int i = 0; i < c.length; i++) {
|
||||||
|
chars[i] = (char) c[i].ordinal();
|
||||||
|
}
|
||||||
|
return new String(chars);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* toMIXChar converts string to MIXChar array.
|
||||||
|
* @param s string to convert.
|
||||||
|
* @return MIXChar array
|
||||||
|
*/
|
||||||
|
static MIXChar[] toMIXChar(String s) {
|
||||||
|
MIXChar[] mix = new MIXChar[s.length()];
|
||||||
|
for (int i = 0; i < mix.length; i++) {
|
||||||
|
mix[i] = new MIXChar(s.charAt(i));
|
||||||
|
}
|
||||||
|
return mix;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ordinal returns numeric valid of character.
|
||||||
|
* @return numeric value
|
||||||
|
*/
|
||||||
|
public int ordinal() {
|
||||||
|
for (int i = 0; i < CHARS.length; i++) {
|
||||||
|
if (this.value == CHARS[i]) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* toString converts MIXChar to
|
||||||
|
* corresponding Java char as a String.
|
||||||
|
* @return mix char as string.
|
||||||
|
*/
|
||||||
|
public String toString() {
|
||||||
|
return "" + toChar();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
package ca.bcit.comp1510.assignment3.q3;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Message of MIXChars.
|
||||||
|
* @author Braeden Sowinski
|
||||||
|
* @version 1.0.0
|
||||||
|
*/
|
||||||
|
public class Message {
|
||||||
|
|
||||||
|
/** maximum number of chars stored per segment. */
|
||||||
|
public static final int MAXCHARPERSEGMENT = 11;
|
||||||
|
|
||||||
|
/** base of MIX character set 0 to 55. */
|
||||||
|
public static final int BASE = 56;
|
||||||
|
|
||||||
|
/** segments of a MIXChar[] where each long holds 11 MIXChar characters. */
|
||||||
|
private long[] segments;
|
||||||
|
|
||||||
|
/** number of characters stored in segments. */
|
||||||
|
private int numChars;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Message constructor.
|
||||||
|
* @param m message to store
|
||||||
|
*/
|
||||||
|
public Message(MIXChar[] m) {
|
||||||
|
int segmentsLength = (int) Math.ceil(m.length / MAXCHARPERSEGMENT);
|
||||||
|
this.segments = new long[segmentsLength];
|
||||||
|
generateSegments(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Message constructor.
|
||||||
|
* @param s message as string
|
||||||
|
*/
|
||||||
|
public Message(String s) {
|
||||||
|
MIXChar[] m = MIXChar.toMIXChar(s);
|
||||||
|
int segmentsLength = (int) Math.ceil(m.length / MAXCHARPERSEGMENT);
|
||||||
|
this.segments = new long[segmentsLength];
|
||||||
|
generateSegments(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* generateSegments loads MIXChar values into
|
||||||
|
* segments.
|
||||||
|
* @param m MIXChar[]
|
||||||
|
*/
|
||||||
|
private void generateSegments(MIXChar[] m) {
|
||||||
|
this.segments = m.length % MAXCHARPERSEGMENT == 0
|
||||||
|
? new long[(m.length / MAXCHARPERSEGMENT)]
|
||||||
|
: new long[(m.length / MAXCHARPERSEGMENT) + 1];
|
||||||
|
|
||||||
|
for (int i = 0; i < this.segments.length; i++) {
|
||||||
|
for (
|
||||||
|
int j = 0;
|
||||||
|
j < MAXCHARPERSEGMENT && this.numChars < m.length;
|
||||||
|
j++
|
||||||
|
) {
|
||||||
|
MIXChar c = m[this.numChars];
|
||||||
|
|
||||||
|
long value = c.ordinal();
|
||||||
|
value *= (long) Math.pow(BASE, j);
|
||||||
|
|
||||||
|
this.segments[i] += value;
|
||||||
|
this.numChars++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* toString returns string message.
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public String toString() {
|
||||||
|
String message = "";
|
||||||
|
for (int i = 0; i < this.segments.length; i++) {
|
||||||
|
long segment = this.segments[i];
|
||||||
|
while (segment != 0) {
|
||||||
|
int value = (int) Long.remainderUnsigned(
|
||||||
|
segment,
|
||||||
|
BASE
|
||||||
|
);
|
||||||
|
char c = MIXChar.CHARS[value];
|
||||||
|
message += c;
|
||||||
|
segment = Long.divideUnsigned(segment, BASE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* toLongs shows encoded longs.
|
||||||
|
* @return longs string
|
||||||
|
*/
|
||||||
|
public String toLongs() {
|
||||||
|
String longs = "";
|
||||||
|
for (int i = 0; i < this.segments.length; i++) {
|
||||||
|
longs += Long.toUnsignedString(this.segments[i]) + " ";
|
||||||
|
}
|
||||||
|
return longs;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package ca.bcit.comp1510.assignment3.q3;
|
||||||
|
|
||||||
|
public class TestMixChar {
|
||||||
|
|
||||||
|
}
|
||||||
Reference in new issue
Block a user