From 632ee34b80ab18be3066914ae1876361516d9b6d Mon Sep 17 00:00:00 2001
From: Muhammad Ismail <muhis511@student.liu.se>
Date: Mon, 21 Sep 2020 12:34:45 +0200
Subject: [PATCH] Lab1, part1 uploaded!

---
 part1/.classpath                              |   7 ++
 part1/.project                                |  17 +++++
 part1/.settings/org.eclipse.jdt.core.prefs    |  12 ++++
 .../triangle/InvalidTriangleException.class   | Bin 0 -> 318 bytes
 part1/bin/triangle/Main.class                 | Bin 0 -> 2111 bytes
 .../bin/triangle/Triangle$TriangleType.class  | Bin 0 -> 1307 bytes
 part1/bin/triangle/Triangle.class             | Bin 0 -> 1320 bytes
 part1/bin/triangle/TriangleTest.class         | Bin 0 -> 2506 bytes
 .../triangle/InvalidTriangleException.java    |   5 ++
 part1/src/triangle/Main.java                  |  37 ++++++++++
 part1/src/triangle/Triangle.java              |  63 ++++++++++++++++++
 part1/src/triangle/TriangleTest.java          |  49 ++++++++++++++
 12 files changed, 190 insertions(+)
 create mode 100644 part1/.classpath
 create mode 100644 part1/.project
 create mode 100644 part1/.settings/org.eclipse.jdt.core.prefs
 create mode 100644 part1/bin/triangle/InvalidTriangleException.class
 create mode 100644 part1/bin/triangle/Main.class
 create mode 100644 part1/bin/triangle/Triangle$TriangleType.class
 create mode 100644 part1/bin/triangle/Triangle.class
 create mode 100644 part1/bin/triangle/TriangleTest.class
 create mode 100644 part1/src/triangle/InvalidTriangleException.java
 create mode 100644 part1/src/triangle/Main.java
 create mode 100644 part1/src/triangle/Triangle.java
 create mode 100644 part1/src/triangle/TriangleTest.java

diff --git a/part1/.classpath b/part1/.classpath
new file mode 100644
index 0000000..145a671
--- /dev/null
+++ b/part1/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/part1/.project b/part1/.project
new file mode 100644
index 0000000..ec3ae6a
--- /dev/null
+++ b/part1/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>part1</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/part1/.settings/org.eclipse.jdt.core.prefs b/part1/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..ec1937b
--- /dev/null
+++ b/part1/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/part1/bin/triangle/InvalidTriangleException.class b/part1/bin/triangle/InvalidTriangleException.class
new file mode 100644
index 0000000000000000000000000000000000000000..47f03a5e8bccb1509b8bcf20fe2faaac493da538
GIT binary patch
literal 318
zcmaivyH12a6o&u9Wl_Y%Xl+4k)-9y5)7Wg*#Dv&L=m(hSY{tRhKzuDL6AK@}huZ9c
z5IeKYf95-9F5moazkdK+<0ODXNNlTwdDb$0Ful;K&L>`fRPxQL#su&PXB*LrRP)aC
zZ$OycDx>Tj!ChPy1aH;UGK7o62tH<nI8#PGcCV#ub5UwZIL(?$=tA%#%u~~|FY29e
zk?nQ4A%ss&*H-dg4cDFjCw(>eA_1%MXTg;QCC-2;9U1VKUpV;WhJ%oE7=sTSaYp0X
M=X%UUm~%RacS|!%cmMzZ

literal 0
HcmV?d00001

diff --git a/part1/bin/triangle/Main.class b/part1/bin/triangle/Main.class
new file mode 100644
index 0000000000000000000000000000000000000000..87a894aaafc16fd817312b5ea6e49664a1e5d039
GIT binary patch
literal 2111
zcmZ`(&sP&y7`-nfnaMCz4F(A+2DBvznATd_2DMa+HWkDgu%&40kUYX@GD&A9R91E2
zqMlRtb*UTHx(GeB$3LKdLI0Z4`x26nLtG^9y?NjJ?sxC^<DdWjdJEtJ9%%>&^!cuB
zIfbH3Em*drAt-S8fwgI+iu{^dTzepMzCie*?b!Zhfu7{}9f9E0a$XwfLBvD|VSz*Q
zwj*y=OKZ|yvet@HAUa>pS;adRz4N^HG3amDp0e%$ouR`L!374AtMhH}EUlcvi~=;~
z9_3`kx66*FAu2G^a*%O0t)iV@+GEkOi{K~*G{idSWVbwDmP{POAgPqAWEN`x+U3+O
zqWQ#>R%u4Z5JBb~U%Cl@LnfMV3D3^UL{T~gf5S^B44lBQhLZyQ^{_j=m^g)mK&YY|
z6Diq^n}$*HZoa-!U0;{3%-@z)Ub-622*jIr8K+X+i?4C5D1KmK3`v22lCRBWpY4o+
z(>Sa0G$Am!7Xt&`Z!&(zzzC+4(K&Ky8#REK0u3Ju9BImsYRYXOg@}6lvB`@1L_nu}
zc~uMoN0Z|R2`j}uHSw7eMym@`babSdjl152fs44T;ZkSL2<j9}e1TbN=~aq0wH)iF
zWtZA9a0Op!xXReub(LXS3(_?)hii<uV!58=w|8VHqh$WtM5bOd(sgy*VB6S@x=Yk$
zR5C1>xQRvj^Q50;m9Wl3$<>UKHid6Z+(wp^3({ZOs!*L#s&hcjGfiEU4HI_)%StOY
zKu7U3x{_JZ@jbO_hSGGW;|G>au3RnV6HeJrsFWnu-Et}6`FYjjcLh$h<!H3+wX$2X
z{8syD_;FuRXBJx*>{ZJxkX(Nkxmky6E~~87Q=Rq9M%SA`(!oLgG>9Io8NO1T+0Znw
znh_8-e_X>J-8lswsOZSPmt8s0`{_33y9NiX_VrPlIKTI0eJl5H!K&29nTGosh;3xc
zRW~QE*=p=X)D%6Z#1$|zjw9WxMa%Of$JVC6aFczjfjTnICrf*COcemzihaRZ4FtI3
zpyj{DQ;MtL8alfJ{Z;+i;J>;CboBDyY#4Cu<0*poaEMM0b06f*5#=T@M3*MNynK!R
zXuO8wZ!og*2B%kE<NY0s?_hHN4N@yR_-J9GhVwURHdVv)RP^&2X41iU@a^A5I@B{A
zjt5uL#@p#g&$PacvA7Y_&!@F`C>DMa7IE!Qe7U%dzI5+vT#tT32Tybn(_@hryZ=tc
zLp99P?_>?PYFOIFAW^PIzoXSQ%=&(X`&X1<8EcSO#VDTQcQR1xAGpUG#r-y$6lAWG
z(GWS0lJ6M#o}=Y7qPT>9%+h8V1N3tY1q`Ch^A?WdSN7RcoWwH>)8i>TM*=T6G?k8(
z`u|J(g!?=V;Wt=(&-TS*<dCPPV?1AAWIe>ma!TE&!j~|Qbz+2wnZX8Z=4P3%AJC39
z!zdr3NYBseyAt0%ukRf0%EWmLZI{!eS3^a^h=!Dgi}n4_OuXO@*d>u}_q1$S&}?;=
oneS%QbQ0J_96c=*@Xe7M8t&=j<uZ-{JosD<GOn`hewmH`56)orJpcdz

literal 0
HcmV?d00001

diff --git a/part1/bin/triangle/Triangle$TriangleType.class b/part1/bin/triangle/Triangle$TriangleType.class
new file mode 100644
index 0000000000000000000000000000000000000000..821990969f6f05a19c69fbc20db186a3f9ef906a
GIT binary patch
literal 1307
zcmah|T~8BH5IvV|yX~?FR0R13L2L_B!Ga&Hh#{CX7I@gwr19xeuefBp#qE~Zf2Ac6
zqLKLQk221^U7(R@Uv}o)oilT0?%ZF$zg+;x;H8cphAH2(xqIk{bTM$|FP&oZSm+2b
z+&bbXJnc|edfRPO8DjZ*tzHq1s58tI{+}Vs(7XMyVLRLx9(NdYtHK@O3I=VL7v<mG
z{hj&JtHS=a#W4G}d%kF{;@Gb3Z%~RvvcwSDs=X6YgbgqZnuy~zLnIf33?~ZL`YjUc
z9%l2&QjB8nm<S^hg)YHe6S@RZ3C2xCC5TBdWg>=%^kz&L=w;|H*sj=ZR1bt#<OdG*
z5--%KtrDjp5>|%>Gz^kB|AS3)iu$#7afYEp@}?xIJz*k=1){jTN;xAZ+-b-e&n1#w
z$70|i(mIwI20Gep)_qYm@dzt)YuxjAvr;>5GNd|(vUhMKDt<QKA?oso21PffbnLxn
z$aK<zSth$(n4H6!iB+sKtaT>Xa(KO-?WlT{@wx-KaI`{(Rcm+^@!FQN?z`O3Wf@0}
zS@xmJ{f0;XRy)#3ZmyfU4a#ojT~~NYj;QN+L0fcVsVVBRtb7=oD|BBPJ*4pFs9Yj|
zEbWi7v^vVt)&K)za%W^Dt(1vA;@u+j2_gCd#qVI{c)xarfl~}AFdR}~M1j$;0%HnH
zL=>3Re-KG)VaO_nS{Sj);TFcMa-@Yx>lD*pC~psD>1&V$>B^9jd+JpFp$8JESfL(d
z7kX-O;tX@w#0Ui-AeqY7F)!O8|2`H1dYY_^3#Y!~!Dn*XRoi4kRcw>P0Xc>g76bA+
zO+?lnZehCoMoV3kbF!@+ZTuWdOMho$SNdbLN{@paDXJ(17;%<5N9HHkzj+#-D1}e)
ROxfqiN+$6ca@g1${R8h`7ij<h

literal 0
HcmV?d00001

diff --git a/part1/bin/triangle/Triangle.class b/part1/bin/triangle/Triangle.class
new file mode 100644
index 0000000000000000000000000000000000000000..1d98e0f4e605be48a4033adfa0218743551b6355
GIT binary patch
literal 1320
zcmah|OHb5L7(I8|PN7poUV}Uad5JRxiy|T_q6xud%m@nz#;__wgT*p~(}KG3AGq)j
zh$bd(k*KId-20o1@!ZY>6cZP7``vTD=lRb3`1SP=z&Nh!hzT@>CC@3W`R?dq#n7P&
zoL+afol&1Jqw_24Zax&y0&mp~1Y*lsf%ueH@WN>UC7oFkP-lv(t^oxJ6FTYy8gpL3
zo!i=2aZ8KNith?E=Zbm9UvgN5_X?<n4?U)A$(`uphJe22hKtWO8QY)Eob(v1HY|PU
zZp=Q-yPKg`ECf1Q1^Q|^vxRNP_g1U^HNSc!aYjeGKu^uL>hwo;6CLQ}taHwyK=1!r
zsfR$f2@P?BR*#9Z=p{wL6K9h{rI)kWY-Y(o3lg${0TY8Vd1ChQmghU6TXKAf51BYG
z@%n5~4Dzn;1`^Gfuq3K4kW9BgZsH|3*z&obhK10{Kf32^R=5=;R(SkzU1FWxha0S4
zM^YEci&WDYxyrhrhG=X~uG3g3Zk6)x9ZxQ<p-PD@H6dVT3kA0{<2ykh<zQBy<r>h(
zi51F=GLZz((r8l>JnMNI<yT15+K2I;Mhqs;cm%3wply~Na0-pQQHp4yS2Jyuw-%X3
z%&|y}$oD<8<*X0rI*ji?8{U<sV#`yt-@=Tp>Sv^maIJ=G6<m${Yq(m)75f!BWS|x~
zDE4YO?;9iz(DGm(ecz9#eGOv|{keA-IYL!?2hHUud1`j#bdFB?9@4qtU5=nc1l)}V
zZ03lqBq7PsJJ5qpN}wAPNZ}SmG>2Z?M?bbPfae&(3%<TY8hgm#6J_xQ!}ta}A~9K}
zr$VBN1HN^Vz7bYzg7FiLI+E?}?LB&1Dz3ng8s)QGQJzhx{5D!$_O#Vyb=&h+cWVA<
zS+YxDjOS$rj<d#<sHRm8!-Z(?Ou$~`zNK}MR*dfnT%x5A9b@$0njlA#lH;0~{HG?y
zS+X2FO>e1$xHbF{T}MqC5jsWr-8@D}yh4anoRp`O=|oiVDkk}rf7m2{*KT+G2FqgV
A@c;k-

literal 0
HcmV?d00001

diff --git a/part1/bin/triangle/TriangleTest.class b/part1/bin/triangle/TriangleTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..1ff7d086e36d4dc5bbc665d2665475d97eb17956
GIT binary patch
literal 2506
zcmb7FYj+b>6x}zkNz=im>BF{EptX-ANP~bcf=FA6L_?z_6k~l&liPO6bS5T~3O`Gi
z0t;RK0GGeX<-U{2B-oV7hs@kL_uPH<-RF_N{(12yfNL-`gajtsrfJxFmdsWBMMbt;
z4H1FlfpKKyEbit?I|s7n3dFnK0%OJQIyjjZh}|%4)4eGWPG`0RBI{0FCJ@H34h?aE
zk)mnK&GzArY*vgNOA4flPR+2k3`Xa-Z;ZJ6W=r7B<1rLF#)-D1`=B8(eZOtH=Aqm&
zTPBaM+P32wuIbo3JzsR1d%1%)3Gvx5UD?bT4KueUcb%r(FlzgG4dVi%$1ak<7>0*H
z0y?6I37l~mcH?nPHWao%B3QRHoE4Z0APV-8VVU)cFJ|B;Fna<W??x)(IUVP5fg<y6
zWwS1Mg=l)akl9KxU-LTN#)5z*AIn<XrEs^?C#aJ-A<%Byt||Jt4G%)eoljs1X${K)
z7Y2*9+G@$BC#a4LvI4r{St|QY=O;2Or;EKZS+}^Ee~s{&zQZ1(M@k^1vLD(muwXpp
ze{7qU!TcGP5-O+TGTx;Yd(y2uX;6##bmq7i3*96rpZpN6;yn%51kMG?>N>pSspEZo
zATYeq3rclPgI7X+q~khRoW4W^Ff86<xnH7AC*}L@?ORm4cx6^-Ijx$sWJ@u=spAvH
zW+<?dnUbW;rjfQ(K5IJGm5=7zxKbXQhO2h(==fCahBu80Ys)eYck0H%WeuOPhkL0D
z)Ms&*op!S(@0hARN4pxSGF?&r91LrY<F?$U(YPnweW%_^poA|qe8EKY5Ka5Yc_ed1
zFCZO_U8CkY%_lnUqs&_z_DlkQ_iN;z?10}j>^j9*C_2ugcB5aoGV^Hf^;=##=w-c6
z=l{Ri3HfT^{>t@{*A2@mbIRmLV%SU~p5Op^sN*i;BO117U}Y3+TQ<Emk(?ag2rM2G
zY|ynee8;+dwJV2jM<a#_lE%u%9C?H}LfBDinsF89n&X(yA%5lf7JNsu&ye_;ix6}^
zW1dmN8Lst?1Kz+0zgPi09KxvYrRI|Yy3Q~PNYDO`vFbBS{D#RMUV<kS(l8Nwn0kOY
zMa(d!=@TK!On^R1i$a&QD}=?^ABk!>QmRHmrD`-%DrSGh<i)3WD>ajS!OP+~79aM)
zrg#hlOCp6S4vz(ld*LTLV1D={CU6n&FtEU-Q;6*PM3w>~B-2ks5qgT1UvT9)KKw6}
zDKeQRlNl`HY#)=QfXQUQ<i=|;iBS^%qS2lt0h5mhFgZ^q7szCeOy*Bva_bZ(d%h;i
zo+cWZ#K|NX8$e}s0F@;sXqmF4IYl#lRF-{FM$r@H_9;{jd@5P3TPG?#(NZ-QAHZf~
z0GmrJkrm9cF*5w4QMKABmaNZayvrsTQr*o$>Q-&RtJEuA8L`cL`FkbM>8UXfv(r;?
pA2W>487G7y?(wbmD(r>__zG2gO-qV<+xQmWGuBm>@ejAA{{`h{B_IF*

literal 0
HcmV?d00001

diff --git a/part1/src/triangle/InvalidTriangleException.java b/part1/src/triangle/InvalidTriangleException.java
new file mode 100644
index 0000000..e4226af
--- /dev/null
+++ b/part1/src/triangle/InvalidTriangleException.java
@@ -0,0 +1,5 @@
+package triangle;
+
+public class InvalidTriangleException extends Exception {
+
+}
diff --git a/part1/src/triangle/Main.java b/part1/src/triangle/Main.java
new file mode 100644
index 0000000..592aacf
--- /dev/null
+++ b/part1/src/triangle/Main.java
@@ -0,0 +1,37 @@
+package triangle;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+
+public class Main {
+
+	public static void main(String[] args) throws InvalidTriangleException {
+		System.out.print("Enter the triangle side lengths: ");
+		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+		final Triangle triangle = new Triangle();
+		try {
+			final String readLine = br.readLine();
+			System.out.println(readLine);
+			final String[] split = readLine.split("\\s+");
+			int[] intSides = new int[split.length];
+			int i = 0;
+			for (String string : split) {
+				try {
+					intSides[i++] = Integer.parseInt(string);
+				}catch(NumberFormatException e) {
+					System.err.println("invalid Input");
+				}
+			}
+			triangle.setSides(intSides);
+			System.out.println(triangle.getType());
+		} catch (InvalidTriangleException e) {
+			System.err.println("invalid triangle");
+		} catch (IOException e) {
+			System.err.println("could not read from stdin");
+		}
+
+	}
+
+}
diff --git a/part1/src/triangle/Triangle.java b/part1/src/triangle/Triangle.java
new file mode 100644
index 0000000..2edd6fc
--- /dev/null
+++ b/part1/src/triangle/Triangle.java
@@ -0,0 +1,63 @@
+package triangle;
+
+
+public class Triangle {
+
+	public enum TriangleType {
+		Isosceles, Equilateral, Scalene, NaT;
+
+		public String toString() {
+			return name();
+		};
+	}
+
+	private int[] sides;
+	
+	public TriangleType getType() throws InvalidTriangleException
+	{
+		TriangleType result = TriangleType.NaT;
+
+		if (sides.length != 3) {
+			//throw new InvalidTriangleException();
+			return result;
+		}
+		
+		if (sides[0] > sides[1])
+			swap(sides, 0, 1);
+
+		if (sides[0] > sides[2])
+			swap(sides, 0, 2);
+
+		if (sides[1] > sides[2])
+			swap(sides, 1, 2);
+		
+		if (sides[0] <= 0 || sides[2] - sides[0] >= sides[1]) {
+			throw new InvalidTriangleException();
+		}
+
+		if (sides[0] == sides[2]) {
+			result = TriangleType.Equilateral;
+		} else if (sides[0] == sides[1] || sides[1] == sides[2]) {
+			result = TriangleType.Isosceles;
+		} else {
+			result = TriangleType.Scalene;
+		}
+
+		return result;
+	}
+
+	private static void swap(int s[], int i, int j) {
+		int tmp = s[i];
+		s[i] = s[j];
+		s[j] = tmp;
+	}
+
+	public int[] getSides() {
+		return sides;
+	}
+
+	public void setSides(int[] sides) {
+		this.sides = sides;
+	}
+
+}
diff --git a/part1/src/triangle/TriangleTest.java b/part1/src/triangle/TriangleTest.java
new file mode 100644
index 0000000..b7bcb14
--- /dev/null
+++ b/part1/src/triangle/TriangleTest.java
@@ -0,0 +1,49 @@
+package triangle;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class TriangleTest {
+	private triangle.Triangle triangle;
+
+	@BeforeEach
+	public void setUp() {
+		triangle = new triangle.Triangle();
+	}
+
+	@Test
+	public void testException() throws InvalidTriangleException {
+		final int[] is = new int[]{1, -1, 1};
+		triangle.setSides(is);
+		Assertions.assertThrows(InvalidTriangleException.class, ()->triangle.getType());
+	}
+	
+	@Test
+	public void testEquilateral() throws InvalidTriangleException {
+		final int[] is = new int[]{1, 1, 1};
+		triangle.setSides(is);
+		Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.Equilateral);
+	}
+	
+	@Test
+	public void testIsosceles() throws InvalidTriangleException{
+		final int[] is = new int[]{3, 3, 2};
+		triangle.setSides(is);
+		Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.Isosceles);
+	}
+	
+	@Test
+	public void testScalene() throws InvalidTriangleException{
+		final int[] is = new int[]{4, 5, 6};
+		triangle.setSides(is);
+		Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.Scalene);
+	}
+	
+	@Test
+	public void testNat() throws InvalidTriangleException{
+		final int[] is = new int[]{1, 1, 2, 5};
+		triangle.setSides(is);
+		Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.NaT);
+	}
+}
-- 
GitLab