Skip to content

Commit 2481aa1

Browse files
author
Loi Nguyen
committed
Merged in development (pull request #10)
Release v1.0.6
2 parents 021b0d7 + 1b4b7fe commit 2481aa1

File tree

9 files changed

+162
-116
lines changed

9 files changed

+162
-116
lines changed

CMakeLists.txt

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,23 @@ endforeach ()
9696
add_library(${PROJECT_NAME} SHARED ${SOURCES_CPP})
9797
add_library(${PROJECT_NAME}_static STATIC ${SOURCES_CPP})
9898

99+
# Link library for OSX and other platform
100+
# Darwin platform no need to link realtime library (-lrt)
101+
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
102+
set(DYLD_LIBRARY_PATH ${DYLD_LIBRARY_PATH})
103+
target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT} -lm)
104+
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
105+
target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT} -lm -lrt)
106+
else ()
107+
target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT} -lm)
108+
endif ()
109+
99110
# Add make installation - install to Unix system
100111
set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY true)
101-
install(TARGETS ${PROJECT_NAME} DESTINATION ../lib OPTIONAL)
102-
install(TARGETS ${PROJECT_NAME}_static DESTINATION ../lib OPTIONAL)
103-
install(FILES library.hpp DESTINATION ../include/native)
104-
install(DIRECTORY library DESTINATION ../include/native FILES_MATCHING PATTERN "*.hpp")
112+
install(TARGETS ${PROJECT_NAME} DESTINATION lib OPTIONAL)
113+
install(TARGETS ${PROJECT_NAME}_static DESTINATION lib OPTIONAL)
114+
install(FILES library.hpp DESTINATION include/native)
115+
install(DIRECTORY library DESTINATION include/native FILES_MATCHING PATTERN "*.hpp")
105116

106117
# Detect operating system
107118
find_file(DEBIAN debian_version debconf.conf PATHS /etc)
@@ -129,14 +140,3 @@ add_custom_target(
129140
COMMAND rm -rf /usr/include/native
130141
COMMAND rm -rf /usr/lib/libnative*
131142
)
132-
133-
# Link library for OSX and other platform
134-
# Darwin platform no need to link realtime library (-lrt)
135-
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
136-
set(DYLD_LIBRARY_PATH ${DYLD_LIBRARY_PATH})
137-
target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT} -lm)
138-
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
139-
target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT} -lm -lrt)
140-
else ()
141-
target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT} -lm)
142-
endif ()

library/Java/Lang/Enum/Enum.hpp

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -33,36 +33,31 @@ namespace Java {
3333
namespace Lang {
3434
template<typename E>
3535
class Enum : public Object,
36-
//public virtual Comparable<E>,
37-
public virtual Serializable {
36+
//public virtual Comparable<E>,
37+
public virtual Serializable {
3838
private:
39-
string name;
40-
int original;
41-
string originalString;
39+
String enumName;
40+
int ordinalNumber;
4241

4342
public:
44-
Enum(const_string name, int original) {
45-
this->name = stringCopy(name);
46-
this->original = original;
47-
this->originalString = stringCopy("");
43+
Enum(const_string enumName, int ordinalNumber) : enumName(enumName), ordinalNumber(ordinalNumber) {
44+
4845
}
4946

50-
Enum(string name, int original) {
51-
this->name = stringCopy(name);
52-
this->original = original;
53-
this->originalString = stringCopy("");
47+
Enum(String enumName, int ordinalNumber) : enumName(enumName), ordinalNumber(ordinalNumber) {
48+
5449
}
5550

56-
~Enum() {
57-
free(this->name);
58-
free(this->originalString);
51+
Enum(string enumName, int ordinalNumber) : enumName(enumName), ordinalNumber(ordinalNumber) {
52+
5953
}
6054

55+
6156
public:
6257
Enum clone() {
6358
Enum result;
64-
result.name = this->name;
65-
result.original = this->original;
59+
result.enumName = this->enumName;
60+
result.ordinalNumber = this->ordinalNumber;
6661
return result;
6762
}
6863

@@ -73,34 +68,40 @@ namespace Java {
7368
* @return int
7469
*/
7570
int compareTo(const Enum<E> &e) {
76-
return this->original - e.original;
71+
return this->ordinalNumber - e.ordinalNumber;
7772
}
7873

7974
/**
8075
* Returns the name of this enum constant, exactly as declared in its enum declaration.
8176
* @return String
8277
*/
83-
String getName() {
84-
return this->name;
78+
String name() {
79+
return this->enumName;
8580
}
8681

8782
/**
8883
* Returns the original of this enumeration constant
8984
* (its position in its enum declaration, where the initial constant is assigned an original of zero).
9085
* @return int
9186
*/
92-
int getOrdinal() {
93-
return this->original;
87+
int ordinal() {
88+
return this->ordinalNumber;
9489
}
9590

9691
/**
9792
* Returns the name of this enum constant, as contained in the declaration.
9893
* @return String
9994
*/
10095
String toString() {
101-
free(this->originalString);
102-
asprintf(&this->originalString, "%d", this->original);
103-
return this->originalString;
96+
return this->enumName;
97+
}
98+
99+
/**
100+
* Returns true if the specified object is equal to this enum constant
101+
* @return boolean
102+
*/
103+
boolean equals(Enum<E> &other) {
104+
return this->ordinalNumber == other.ordinalNumber;
104105
}
105106
};
106107
}

library/Java/Lang/Enum/EnumTest.cpp

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,29 @@ TEST (JavaLangEnum, GetName) {
3333
// Given valid enum and name to test getName()
3434
Enum<Integer> validEnum = Enum<Integer>("validName", 7);
3535
String expectedValue = "validName";
36-
assertEquals(expectedValue.toString(), validEnum.getName().toString());
36+
assertEquals(expectedValue.toString(), validEnum.name().toString());
3737
}
3838

3939
TEST (JavaLangEnum, GetOrdinal) {
4040
// Given valid enum and name to test getOrdinal()
4141
Enum<Integer> validEnum = Enum<Integer>("validName", 18);
4242
int expectedValue = 18;
43-
assertEquals(expectedValue, validEnum.getOrdinal());
43+
assertEquals(expectedValue, validEnum.ordinal());
4444
}
4545

4646
TEST (JavaLangEnum, ToString) {
4747
// Given valid enum and name to test getOrdinal()
4848
Enum<Integer> validEnum = Enum<Integer>("validName", 18);
49-
assertEquals("18", validEnum.toString());
49+
assertEquals("validName", validEnum.toString());
50+
}
51+
52+
TEST (JavaLangEnum, equals) {
53+
// Compare 2 equals enum - Return true
54+
Enum<Integer> enum1 = Enum<Integer>("enum1", 1);
55+
Enum<Integer> enum2 = Enum<Integer>("enum2", 1);
56+
assertTrue(enum1.equals(enum2) == true);
57+
58+
// Compare 2 unequal enum - Return false
59+
Enum<Integer> enum3 = Enum<Integer>("enum3", 3);
60+
assertTrue(enum1.equals(enum3) == 0);
5061
}

library/Java/Lang/Object/Object.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ namespace Java {
233233
* be cloned.
234234
* @see java.lang.Cloneable
235235
*/
236-
Object &clone() throw (CloneNotSupportedException) {
236+
Object &clone() {
237237
throw CloneNotSupportedException();
238238
}
239239

@@ -284,7 +284,7 @@ namespace Java {
284284
*
285285
* @throws Throwable the {@code Exception} raised by this method
286286
*/
287-
void finalize() throw(Throwable);
287+
void finalize();
288288

289289
public:
290290
/**
@@ -389,7 +389,7 @@ namespace Java {
389389
* @see java.lang.Object#notify()
390390
* @see java.lang.Object#notifyAll()
391391
*/
392-
virtual void wait() throw(InterruptedException) final {
392+
virtual void wait() final {
393393
throw InterruptedException();
394394
}
395395

@@ -478,7 +478,7 @@ namespace Java {
478478
* @see java.lang.Object#notify()
479479
* @see java.lang.Object#notifyAll()
480480
*/
481-
virtual void wait(int timeout) throw(InterruptedException) final {
481+
virtual void wait(int timeout) final {
482482
throw InterruptedException();
483483
}
484484

@@ -544,7 +544,7 @@ namespace Java {
544544
* status</i> of the current thread is cleared when
545545
* this exception is thrown.
546546
*/
547-
virtual void wait(int timeout, int nanos) throw(InterruptedException) final {
547+
virtual void wait(int timeout, int nanos) final {
548548
throw InterruptedException();
549549
}
550550

library/Java/Lang/String/String.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ int String::indexOf(int character) const {
224224
if (found != std::string::npos) {
225225
return found;
226226
} else {
227-
return NOT_FOUND;
227+
return DO_NOT_FOUND;
228228
}
229229
}
230230

@@ -314,7 +314,7 @@ int String::lastIndexOf(String subString) const {
314314
std::reverse(currentReversedString.begin(), currentReversedString.end());
315315
std::size_t found = currentReversedString.find(reversedString.original);
316316
if (found == std::string::npos) {
317-
return NOT_FOUND;
317+
return DO_NOT_FOUND;
318318
}
319319
return ((int) this->original.size() - (int) (found + subString.original.size()));
320320
}
@@ -337,7 +337,7 @@ int String::lastIndexOf(String subString, int fromIndex) const {
337337
std::string reversedString = subString.toCharPointer();
338338
std::reverse(reversedString.begin(), reversedString.end());
339339
int result = subStringFromIndex.find(reversedString);
340-
if (result == NOT_FOUND) {
340+
if (result == DO_NOT_FOUND) {
341341
return result;
342342
}
343343

library/Java/Lang/String/StringTest.cpp

Lines changed: 63 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,17 @@ TEST (JavaLangString, Destructor) {
147147
auto textPointer = new String("Hello");
148148
delete textPointer;
149149
}
150+
TEST (JavaLangString, getSize) {
151+
//Given a String - Return size of the String
152+
String text = "Hello World";
153+
int sizeOfText = text.getSize();
154+
assertEquals(11, sizeOfText);
155+
156+
//Given a null String
157+
String nullText = "";
158+
assertEquals(0, nullText.getSize());
150159

160+
}
151161
TEST (JavaLangString, Equals) {
152162
// Given two String objects with same value - Return they should equal
153163
String stringEqual1 = "Hello World";
@@ -520,7 +530,7 @@ TEST (JavaLangString, LastIndexOf) {
520530

521531
// Test false with wrong subString
522532
result = validString.lastIndexOf(wrongString);
523-
assertEquals(NOT_FOUND, result);
533+
assertEquals(DO_NOT_FOUND, result);
524534
}
525535

526536
{
@@ -611,14 +621,14 @@ TEST (JavaLangString, GetChars) {
611621
Array<char> subCharArray1= {'S','t','r','i','n','g','S','t','r','i','n','g'};
612622

613623
for (int index=0; index<Math::min(subCharArray1.length, charArray.length); index++) {
614-
assertTrue((int) subCharArray1[index] == (int) charArray[index]);
624+
assertTrue((int) subCharArray1[index] == (int) charArray[index]);
615625
}
616626

617627
testString.getChars(10, 16, charArray, 3);
618628
Array<char> subCharArray2 = {'S','t','r','S','t','r','i','n','g', 'i','n','g'};
619-
for (int index=0; index<Math::min(subCharArray2.length, charArray.length); index++) {
620-
assertTrue((int) subCharArray2[index] == (int) charArray[index]);
621-
}
629+
for (int index=0; index<Math::min(subCharArray2.length, charArray.length); index++) {
630+
assertTrue((int) subCharArray2[index] == (int) charArray[index]);
631+
}
622632
}
623633

624634
TEST (JavaLangString, IsEmpty) {
@@ -852,26 +862,54 @@ TEST (JavaLangString, StartsWith) {
852862
assertFalse(textPlus.startsWith(String("ello")));
853863
}
854864

865+
TEST(JavaLangString, toCharArray){
866+
//Given a string - Return an array of char
867+
String text = "Hello World";
868+
String textResult = "";
869+
int index;
870+
Array<char> arrayOfText = text.toCharArray();
871+
for(index = 0; index < arrayOfText.length; index++) {
872+
textResult += arrayOfText[index];
873+
}
874+
assertEquals("Hello World", textResult);
875+
876+
//Given a null String
877+
String nullText = "";
878+
textResult = "";
879+
Array<char> arrayNull = nullText.toCharArray();
880+
assertEquals("", arrayNull);
881+
}
882+
883+
TEST(JavaLangString, toCharPointer){
884+
String text = "Hello World";
885+
int index;
886+
char* ptrToText = text.toCharPointer();
887+
for(index = 0; index < text.length() ; index++) {
888+
889+
assertEquals(text[index], *(ptrToText + index));
890+
}
891+
}
892+
855893
TEST (JavaLangString, ToLowerCase) {
856-
{
857-
String textPlus = "Hello HELLO Hello ";
858-
String result = textPlus.toLowerCase();
859-
assertEquals("hello hello hello ", result);
860-
}
861-
862-
{
863-
String unicodeString = "Đây Là Tiếng VIỆT";
864-
String result = unicodeString.toLowerCase();
865-
assertEquals("đây là tiếng việt", result);
866-
}
894+
{
895+
String textPlus = "Hello HELLO Hello ";
896+
String result = textPlus.toLowerCase();
897+
assertEquals("hello hello hello ", result);
898+
}
899+
900+
{
901+
String unicodeString = "Đây Là Tiếng VIỆT";
902+
String result = unicodeString.toLowerCase();
903+
assertEquals("đây là tiếng việt", result);
904+
}
867905
}
868906

869907
TEST (JavaLangString, ToUpperCase) {
870-
{
871-
String textPlus = "Hello HELLO Hello ";
872-
String result = textPlus.toUpperCase();
873-
assertEquals("HELLO HELLO HELLO ", result);
874-
}
908+
{
909+
String textPlus = "Hello HELLO Hello ";
910+
String result = textPlus.toUpperCase();
911+
assertEquals("HELLO HELLO HELLO ", result);
912+
}
875913

876914
{
877915
String unicodeString = "Đây Là Tiếng VIỆT";
@@ -893,10 +931,10 @@ TEST (JavaLangString, Trim) {
893931
assertEquals("đây là tiếng việt", result.toString());
894932
}
895933

896-
{
897-
String trimUpperCase = " this is a cat ";
898-
assertEquals("THIS IS A CAT", trimUpperCase.trim().toUpperCase());
899-
}
934+
{
935+
String trimUpperCase = " this is a cat ";
936+
assertEquals("THIS IS A CAT", trimUpperCase.trim().toUpperCase());
937+
}
900938

901939
{
902940
String allSpaceString = " ";

0 commit comments

Comments
 (0)