diff --git a/src/methods/radical/radical.pl b/src/methods/radical/radical.pl
index 4663ceffc820f13db7822119713d90caee9614a1..b51f77c7cb258ba1a4c0774e1d5e362ea178b161 100644
--- a/src/methods/radical/radical.pl
+++ b/src/methods/radical/radical.pl
@@ -32,6 +32,10 @@
 %%              Initilizes the radical model.
 %%
 initModel(NoiseStdDev, Replicates, Angles, Sweeps, M) :-
+        NoiseStdDev >= 0,
+        Replicates > 0,
+        Angles > 0,
+        Sweeps >= 0,
         initModelI(NoiseStdDev, Replicates, Angles, Sweeps, M).
 
 foreign(initModel, c, initModelI(+float32, +integer, +integer, +integer, +integer)).
diff --git a/src/methods/radical/radical_test.pl b/src/methods/radical/radical_test.pl
index 995725b2c9ee9af1444f364b2c1d75be4183fdee..1b029279e1cf24d8a43e7c5bf81424db3e2bd2ff 100644
--- a/src/methods/radical/radical_test.pl
+++ b/src/methods/radical/radical_test.pl
@@ -7,35 +7,107 @@
 :- use_module('../../helper_files/helper.pl').
 
 reset_Model :-
-        initModel(1,0,50,0.0001).
+        initModel(0.175,30,150,0,0).
 
 %%
-%% TESTING predicate predicate/10
+%% TESTING predicate initModel/5
 %%
-:- begin_tests(predicate).      
+:- begin_tests(initModel).      
 
 %% Failure Tests
+
+test(radical_InitModel_DoRadical_No_Init) :-
+        doRadical([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, Y, _, W, _),
+        print('\nY: '),
+        print(Y),
+        print('\nW: '),
+        print(W).
+
+test(radical_InitModel_DoRadical2D_No_Init) :-
+        doRadical2D([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, Result),
+        print('\nResult: '),
+        print(Result).
                                             
-test(testDescription, [error(domain_error('expectation' , culprit), _)]) :-
-        reset_Model_No_Train(perceptron),
-        train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 2, culprit, 50, 0.0001, _).
+test(radical_InitModel_Negative_NoiseStdDev, fail) :-
+        initModel(-0.175,30,150,0,0).
+
+test(radical_InitModel_Negative_Replicates, fail) :-
+        initModel(0.175,-30,150,0,0).
+
+test(radical_InitModel_Negative_Angles, fail) :-
+        initModel(0.175,30,-150,0,0).
+
+test(radical_InitModel_Negative_Sweeps, fail) :-
+        initModel(0.175,30,150,-1,0).
+
+test(radical_InitModel_Negative_M, fail) :-
+        initModel(0.175,30,150,0,-1).
+        
+
+%% Successful Tests
+
+test(radical_InitModel_Normal_Use) :-
+        initModel(0.175,30,150,0,0).
+
+:- end_tests(initModel).
+
+
+
+%%
+%% TESTING predicate doRadical/10
+%%
+:- begin_tests(doRadical).      
 
-test(testDescription2, [error(_,system_error('The values of the Label have to start at 0 and be >= 0 and < the given numClass!'))]) :-
-        reset_Model_No_Train(perceptron),
-        train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,1,0,2], 2, perceptron, 50, 0.0001, _).
+%% Failure Tests
+        
+
+%% Successful Tests
+
+test(radical_DoRadical_Normal_Use) :-
+        reset_Model,
+        doRadical([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, Y, _, W, _),
+        print('\nY: '),
+        print(Y),
+        print('\nW: '),
+        print(W).
+
+test(radical_DoRadical_CSV_Input) :-
+        reset_Model,
+        open('src/data_csv/iris2.csv', read, File),
+        take_csv_row(File, skipFirstRow,10, Data),
+        doRadical(Data, 4, Y, _, W, _),
+        print('\nY: '),
+        print(Y),
+        print('\nW: '),
+        print(W).
+
+:- end_tests(doRadical).
+
+
+
+%%
+%% TESTING predicate predicate/10
+%%
+:- begin_tests(predicate).      
+
+%% Failure Tests
         
 
 %% Successful Tests
 
-test(testDescription3, [true(Error =:= 1)]) :-
-        reset_Model_No_Train(perceptron),
-        train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 2, perceptron, 50, 0.0001, Error).
+test(radical_DoRadical2D_Normal_Use) :-
+        reset_Model,
+        doRadical2D([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, Result),
+        print('\nResult: '),
+        print(Result).
 
-test(testDescription4, [true(Error =:= 0.9797958971132711)]) :-
-        reset_Model_No_Train(perceptron),
+test(radical_DoRadical2D_CSV_Input) :-
+        reset_Model,
         open('src/data_csv/iris2.csv', read, File),
         take_csv_row(File, skipFirstRow,10, Data),
-        train(Data, 4, [0,1,0,1,1,0,1,1,1,0], 2, perceptron, 50, 0.0001, Error).
+        doRadical2D(Data, 4, Result),
+        print('\nResult: '),
+        print(Result).
 
 :- end_tests(predicate).