diff --git a/.gitignore b/.gitignore
index a1c2a23..956d23c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,5 +19,7 @@
*.tar.gz
*.rar
+.idea/
+
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index e66f2e9..ff8be1b 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -10,7 +10,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..712ab9d
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_google_code_findbugs_jsr305_1_3_9.xml b/.idea/libraries/Maven__com_google_code_findbugs_jsr305_1_3_9.xml
new file mode 100644
index 0000000..0e66824
--- /dev/null
+++ b/.idea/libraries/Maven__com_google_code_findbugs_jsr305_1_3_9.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_1_3.xml b/.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_1_3.xml
new file mode 100644
index 0000000..2343a7f
--- /dev/null
+++ b/.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_google_guava_guava_25_0_jre.xml b/.idea/libraries/Maven__com_google_guava_guava_25_0_jre.xml
new file mode 100644
index 0000000..7de6f07
--- /dev/null
+++ b/.idea/libraries/Maven__com_google_guava_guava_25_0_jre.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_1.xml b/.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_1.xml
new file mode 100644
index 0000000..c06f999
--- /dev/null
+++ b/.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_11_0.xml b/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_11_0.xml
new file mode 100644
index 0000000..0917a5b
--- /dev/null
+++ b/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_11_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_squareup_okio_okio_1_14_0.xml b/.idea/libraries/Maven__com_squareup_okio_okio_1_14_0.xml
new file mode 100644
index 0000000..eb4535d
--- /dev/null
+++ b/.idea/libraries/Maven__com_squareup_okio_okio_1_14_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_8_15.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_8_15.xml
new file mode 100644
index 0000000..c7e234c
--- /dev/null
+++ b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_8_15.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_apache_commons_commons_exec_1_3.xml b/.idea/libraries/Maven__org_apache_commons_commons_exec_1_3.xml
new file mode 100644
index 0000000..e064a82
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_commons_commons_exec_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_checkerframework_checker_compat_qual_2_0_0.xml b/.idea/libraries/Maven__org_checkerframework_checker_compat_qual_2_0_0.xml
new file mode 100644
index 0000000..29defe6
--- /dev/null
+++ b/.idea/libraries/Maven__org_checkerframework_checker_compat_qual_2_0_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_codehaus_mojo_animal_sniffer_annotations_1_14.xml b/.idea/libraries/Maven__org_codehaus_mojo_animal_sniffer_annotations_1_14.xml
new file mode 100644
index 0000000..1af11e4
--- /dev/null
+++ b/.idea/libraries/Maven__org_codehaus_mojo_animal_sniffer_annotations_1_14.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_api_3_141_59.xml b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_api_3_141_59.xml
new file mode 100644
index 0000000..ea95118
--- /dev/null
+++ b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_api_3_141_59.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_chrome_driver_3_141_59.xml b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_chrome_driver_3_141_59.xml
new file mode 100644
index 0000000..aa7b6cb
--- /dev/null
+++ b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_chrome_driver_3_141_59.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_edge_driver_3_141_59.xml b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_edge_driver_3_141_59.xml
new file mode 100644
index 0000000..ecf2da2
--- /dev/null
+++ b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_edge_driver_3_141_59.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_firefox_driver_3_141_59.xml b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_firefox_driver_3_141_59.xml
new file mode 100644
index 0000000..17f9a7c
--- /dev/null
+++ b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_firefox_driver_3_141_59.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_ie_driver_3_141_59.xml b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_ie_driver_3_141_59.xml
new file mode 100644
index 0000000..c4c9445
--- /dev/null
+++ b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_ie_driver_3_141_59.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_java_3_141_59.xml b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_java_3_141_59.xml
new file mode 100644
index 0000000..bd12142
--- /dev/null
+++ b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_java_3_141_59.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_opera_driver_3_141_59.xml b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_opera_driver_3_141_59.xml
new file mode 100644
index 0000000..e3736ac
--- /dev/null
+++ b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_opera_driver_3_141_59.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_remote_driver_3_141_59.xml b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_remote_driver_3_141_59.xml
new file mode 100644
index 0000000..b040848
--- /dev/null
+++ b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_remote_driver_3_141_59.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_safari_driver_3_141_59.xml b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_safari_driver_3_141_59.xml
new file mode 100644
index 0000000..d7bd138
--- /dev/null
+++ b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_safari_driver_3_141_59.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_support_3_141_59.xml b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_support_3_141_59.xml
new file mode 100644
index 0000000..20ef3da
--- /dev/null
+++ b/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_support_3_141_59.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 35eb1dd..8306744 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,5 +2,6 @@
+
\ No newline at end of file
diff --git a/JavaCore2.iml b/JavaCore2.iml
index 52c5d42..1f1c1bc 100644
--- a/JavaCore2.iml
+++ b/JavaCore2.iml
@@ -1,14 +1,63 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apiTests.1xml b/apiTests.1xml
new file mode 100644
index 0000000..7ad7471
--- /dev/null
+++ b/apiTests.1xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/chromedriver.exe b/chromedriver.exe
new file mode 100644
index 0000000..4f88879
Binary files /dev/null and b/chromedriver.exe differ
diff --git a/pom.xml b/pom.xml
index ce21f7a..133afdc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,11 +14,84 @@
maven-compiler-plugin
3.6.1
- 12
- 12
- 12
+ 11
+ 11
+ 11
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 3.0.0-M3
+
+
+
+ ${browser}.xml
+
+
+
+ org.testng
+ testng
+ 6.10
+ test
+
+
+
+ io.rest-assured
+ rest-assured-all
+ 4.3.0
+ test
+
+
+
+ org.mariadb.jdbc
+ mariadb-java-client
+ 2.6.0
+
+
+
+ org.seleniumhq.selenium
+ selenium-java
+ 3.141.59
+
+
+
+ com.google.code.gson
+ gson
+ 2.8.6
+
+
+
+ commons-io
+ commons-io
+ 2.6
+
+
+
+ org.apache.logging.log4j
+ log4j-api
+ 2.13.2
+
+
+ org.apache.logging.log4j
+ log4j-core
+ 2.13.2
+
+
+ io.rest-assured
+ json-path
+ 4.3.0
+ test
+
+
+ io.rest-assured
+ rest-assured
+ 4.3.0
+ test
+
+
\ No newline at end of file
diff --git a/src/main/java/L10/App.java b/src/main/java/L10/App.java
new file mode 100644
index 0000000..c5c5185
--- /dev/null
+++ b/src/main/java/L10/App.java
@@ -0,0 +1,36 @@
+package L10;
+
+public class App {
+ public static void main(String[] args) {
+// Dog doggy = new Dog();
+// doggy.age = 10;
+// doggy.breed = "Somoed";
+// doggy.name = "Laika";
+// Dog larry = new Dog("Larry","pug",5);
+// System.out.println(larry.name);
+//
+// doggy.bark();
+// larry.bark();
+//
+// Dog alice = new Dog("Alisa");
+// alice.bark();
+
+ int[] xx={1,2,1};
+ House house = new House(900,2,1,"Colonial", xx);
+ house.printHouseInfo();
+
+ var boat = new Boat("John");
+ boat.printName();
+ boat.owner = "xxx";
+
+ var boat1 = new Boat(50, "Beda", "Vrungel");
+ boat1.printName();
+
+ Student valya = new Student();
+ valya.setName("Valya");
+ valya.setLastname("Vetrova");
+ valya.setYear(5000000);
+
+ System.out.println(valya.getName());
+ }
+}
diff --git a/src/main/java/L10/Boat.java b/src/main/java/L10/Boat.java
new file mode 100644
index 0000000..4d25da3
--- /dev/null
+++ b/src/main/java/L10/Boat.java
@@ -0,0 +1,32 @@
+package L10;
+
+public class Boat {
+ public int length;
+ public String name;
+ public String owner;
+ public int regNumber;
+
+ public Boat(int length, String name, String owner){
+ this.length=length;
+ this.name=name;
+ this.owner=owner;
+ }
+ public Boat(int length){
+ this.length=length;
+ }
+
+ public Boat(int l, String o){
+ length=l;
+ owner=o;
+ }
+ public Boat(String owner){
+ this.owner=owner;
+ }
+ public void printName(){
+ if(name == null){
+ System.out.println("no name defined");
+ return;
+ }
+ System.out.println(name);
+ }
+}
diff --git a/src/main/java/L10/Coach.java b/src/main/java/L10/Coach.java
new file mode 100644
index 0000000..29d064b
--- /dev/null
+++ b/src/main/java/L10/Coach.java
@@ -0,0 +1,50 @@
+package L10;
+
+public class Coach {
+ private String name;
+ private String lastName;
+ private String sport;
+
+ public Coach(String name, String lastName, String sport) {
+ this.name = name;
+ this.lastName = lastName;
+ this.sport = sport;
+ }
+
+ public Coach() {
+ }
+
+ public Coach(String name, String lastName) {
+ this.name = name;
+ this.lastName = lastName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getSport() {
+ return sport;
+ }
+
+ public void setLastName(String lastName) {
+ if(lastName.length()<2){
+ System.out.println("wrong lastname");
+ this.lastName="00";
+ return;
+ }
+ this.lastName = lastName;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setSport(String sport) {
+ this.sport = sport;
+ }
+}
diff --git a/src/main/java/L10/Dog.java b/src/main/java/L10/Dog.java
new file mode 100644
index 0000000..fc13717
--- /dev/null
+++ b/src/main/java/L10/Dog.java
@@ -0,0 +1,23 @@
+package L10;
+
+public class Dog {
+ public String name;
+ public String breed;
+ public int age;
+
+ public Dog(String name1, String breed1, int age1){
+ name = name1;
+ breed = breed1;
+ age=age1;
+ }
+
+ public Dog(){}
+
+ public Dog(String n){
+ name=n;
+ }
+
+ public void bark(){
+ System.out.println(name+" Wow-wow");
+ }
+}
diff --git a/src/main/java/L10/House.java b/src/main/java/L10/House.java
new file mode 100644
index 0000000..7c1daee
--- /dev/null
+++ b/src/main/java/L10/House.java
@@ -0,0 +1,22 @@
+package L10;
+
+public class House {
+ public int sq;
+ public int bedroom;
+ public int bathrooms;
+ public String type;
+ private int[] bulbs;
+
+ public House(int s, int b, int bt, String t, int[] bulbs){
+ sq=s;
+ bedroom=b;
+ bathrooms=bt;
+ type=t;
+ this.bulbs=bulbs;
+ }
+ public House(){}
+
+ public void printHouseInfo(){
+ System.out.println(sq+" "+ " " +bedroom+" "+ bathrooms+" "+type+" "+bulbs.length);
+ }
+}
diff --git a/src/main/java/L10/Person.java b/src/main/java/L10/Person.java
new file mode 100644
index 0000000..da47634
--- /dev/null
+++ b/src/main/java/L10/Person.java
@@ -0,0 +1,19 @@
+package L10;
+
+public class Person {
+ public String name;
+ public String lastname;
+ public Person(String n, String l){
+ this.name = n;
+ this.lastname=l;
+ }
+ public String result(int a, int b, int c){
+ return name+(a+b+c);
+ }
+
+ public String lastResult(int a,String b){
+ return lastname+a+b;
+ }
+
+
+}
diff --git a/src/main/java/L10/Student.java b/src/main/java/L10/Student.java
new file mode 100644
index 0000000..52c8571
--- /dev/null
+++ b/src/main/java/L10/Student.java
@@ -0,0 +1,41 @@
+package L10;
+
+public class Student {
+ private String name;
+ private String lastname;
+ private int year;
+
+ public Student(String name, String lastname){
+ this.name=name;
+ this.lastname=lastname;
+ }
+ public Student(){}
+
+ // Getter
+ public String getName() {
+ return name;
+ }
+ // Setter
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getLastname(){
+ return this.lastname;
+ }
+ public void setLastname(String l){
+ lastname=l;
+ }
+
+ public void setYear(int year) {
+ if(year>1900 && year<2010){
+ this.year = year;
+ return;
+ }
+ System.out.println("wrong year");
+ this.year=1900;
+ }
+
+ public int getYear() {
+ return year;
+ }
+}
diff --git a/src/main/java/L11/Address.java b/src/main/java/L11/Address.java
new file mode 100644
index 0000000..c2827ce
--- /dev/null
+++ b/src/main/java/L11/Address.java
@@ -0,0 +1,26 @@
+package L11;
+
+public class Address {
+ private String street;
+ private String town;
+ private int zip;
+ private String state;
+
+ public Address(String street, String town, int zip, String state) {
+ this.street = street;
+ this.town = town;
+ this.zip = zip;
+ this.state = state;
+ }
+
+
+ public void printAddress() {
+ String address = "Address{" +
+ "street='" + street + '\'' +
+ ", town='" + town + '\'' +
+ ", zip=" + zip +
+ ", state='" + state + '\'' +
+ '}';
+ System.out.println(address);
+ }
+}
diff --git a/src/main/java/L11/App.java b/src/main/java/L11/App.java
new file mode 100644
index 0000000..b8fd31c
--- /dev/null
+++ b/src/main/java/L11/App.java
@@ -0,0 +1,43 @@
+package L11;
+
+public class App {
+ public static void main(String[] args) {
+ Address homeAddress = new Address("158 Broadway","New York",10016,"NY");
+
+
+
+ Name andrew = new Name("Andrew", "Dowson");
+ Person ad = new Person(andrew, homeAddress);
+ Name nm = ad.getName();
+ String l = nm.getLastName();
+ String ln = ad.getName().getLastName();
+ System.out.println(ln);
+
+
+
+
+//
+// andrew.getAddress().printAddress();
+// Vihecles vih = new Vihecles();
+//
+// Farm farm = new Farm(homeAddress,vih,andrew);
+//
+// Address studentAddress = new Address("154 Baden Pl", "Brooklyn",23598,"NY");
+// Student maria = new Student("Maria", "Shi", studentAddress,154154154,"Math");
+
+ Mouse mouse = new Mouse("Logitech");
+// mouse.printInfo();
+ Keyboard kb = new Keyboard("Microsoft");
+// kb.printInfo();
+ Monitor monitor = new Monitor("Samsung", "XX-20",32);
+// monitor.printInfo();
+ // TODO Create class Motherboard and Processor and add them to SysBlock, add to constructor
+ SysBlock sys = new SysBlock();
+
+ Computer dell = new Computer(monitor,sys,mouse,kb);
+ dell.printInfo();
+ String xx = new String("gg");
+
+
+ }
+}
diff --git a/src/main/java/L11/Computer.java b/src/main/java/L11/Computer.java
new file mode 100644
index 0000000..1375dc9
--- /dev/null
+++ b/src/main/java/L11/Computer.java
@@ -0,0 +1,23 @@
+package L11;
+
+public class Computer {
+ private Monitor monitor;
+ private SysBlock sysBlock;
+ private Mouse mouse;
+ private Keyboard keyboard;
+
+ public Computer(Monitor monitor, SysBlock sysBlock, Mouse mouse, Keyboard keyboard) {
+ this.monitor = monitor;
+ this.sysBlock = sysBlock;
+ this.mouse = mouse;
+ this.keyboard = keyboard;
+ }
+ public void printInfo(){
+ monitor.printInfo();
+ keyboard.printInfo();
+ mouse.printInfo();
+// sysBlock.printInfo();
+
+ }
+
+}
diff --git a/src/main/java/L11/Farm.java b/src/main/java/L11/Farm.java
new file mode 100644
index 0000000..67de17f
--- /dev/null
+++ b/src/main/java/L11/Farm.java
@@ -0,0 +1,13 @@
+package L11;
+
+public class Farm {
+ private Address address;
+ private Vihecles vihecles;
+ private Person owner;
+
+ public Farm(Address address, Vihecles vihecles, Person owner) {
+ this.address = address;
+ this.vihecles = vihecles;
+ this.owner = owner;
+ }
+}
diff --git a/src/main/java/L11/Keyboard.java b/src/main/java/L11/Keyboard.java
new file mode 100644
index 0000000..a30d1b2
--- /dev/null
+++ b/src/main/java/L11/Keyboard.java
@@ -0,0 +1,12 @@
+package L11;
+
+public class Keyboard {
+ private String brand;
+
+ public Keyboard(String brand) {
+ this.brand = brand;
+ }
+ public void printInfo(){
+ System.out.println("Keyboard brand = " + brand);
+ }
+}
diff --git a/src/main/java/L11/Monitor.java b/src/main/java/L11/Monitor.java
new file mode 100644
index 0000000..a4a5bfe
--- /dev/null
+++ b/src/main/java/L11/Monitor.java
@@ -0,0 +1,18 @@
+package L11;
+
+public class Monitor {
+ private String brand;
+ private String model;
+ private int diag;
+
+ public Monitor(String brand, String model, int diag) {
+ this.brand = brand;
+ this.model = model;
+ this.diag = diag;
+ }
+
+ public void printInfo() {
+ String xx= "Monitor{brand=" + brand + ", model=" + model + ", diag=" + diag +'}';
+ System.out.println(xx);
+ }
+}
diff --git a/src/main/java/L11/Mouse.java b/src/main/java/L11/Mouse.java
new file mode 100644
index 0000000..099624d
--- /dev/null
+++ b/src/main/java/L11/Mouse.java
@@ -0,0 +1,12 @@
+package L11;
+
+public class Mouse {
+ private String brand;
+
+ public Mouse(String brand) {
+ this.brand = brand;
+ }
+ public void printInfo(){
+ System.out.println("Mouse = "+ brand);
+ }
+}
diff --git a/src/main/java/L11/Name.java b/src/main/java/L11/Name.java
new file mode 100644
index 0000000..62d85fa
--- /dev/null
+++ b/src/main/java/L11/Name.java
@@ -0,0 +1,19 @@
+package L11;
+
+public class Name {
+ private String name;
+ private String lastName;
+
+ public Name(String name, String lastName) {
+ this.name = name;
+ this.lastName = lastName;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+}
diff --git a/src/main/java/L11/Person.java b/src/main/java/L11/Person.java
new file mode 100644
index 0000000..d0967d1
--- /dev/null
+++ b/src/main/java/L11/Person.java
@@ -0,0 +1,19 @@
+package L11;
+
+public class Person {
+ private Name name;
+ private Address address;
+
+ public Person(Name name, Address address) {
+ this.name = name;
+ this.address = address;
+ }
+
+ public Name getName() {
+ return name;
+ }
+
+ public Address getAddress() {
+ return address;
+ }
+}
diff --git a/src/main/java/L11/Student.java b/src/main/java/L11/Student.java
new file mode 100644
index 0000000..f5ac4ee
--- /dev/null
+++ b/src/main/java/L11/Student.java
@@ -0,0 +1,17 @@
+package L11;
+
+public class Student {
+ private String name;
+ private String lastName;
+ private Address address;
+ private int id;
+ private String major;
+
+ public Student(String name, String lastName, Address address, int id, String major) {
+ this.name = name;
+ this.lastName = lastName;
+ this.address = address;
+ this.id = id;
+ this.major = major;
+ }
+}
diff --git a/src/main/java/L11/SysBlock.java b/src/main/java/L11/SysBlock.java
new file mode 100644
index 0000000..6015d41
--- /dev/null
+++ b/src/main/java/L11/SysBlock.java
@@ -0,0 +1,4 @@
+package L11;
+
+public class SysBlock {
+}
diff --git a/src/main/java/L11/Vihecles.java b/src/main/java/L11/Vihecles.java
new file mode 100644
index 0000000..4829ea3
--- /dev/null
+++ b/src/main/java/L11/Vihecles.java
@@ -0,0 +1,4 @@
+package L11;
+
+public class Vihecles {
+}
diff --git a/src/main/java/L12/Address.java b/src/main/java/L12/Address.java
new file mode 100644
index 0000000..a572863
--- /dev/null
+++ b/src/main/java/L12/Address.java
@@ -0,0 +1,4 @@
+package L12;
+
+public class Address {
+}
diff --git a/src/main/java/L12/App.java b/src/main/java/L12/App.java
new file mode 100644
index 0000000..d516c00
--- /dev/null
+++ b/src/main/java/L12/App.java
@@ -0,0 +1,30 @@
+package L12;
+
+public class App {
+ public static void main(String[] args) {
+ Address a1 = new Address();
+ Person person = new Person("John", "Hopkins",1950,"male",a1);
+
+ Address a2 = new Address();
+ Student student = new Student("Samuel", "Jackson",1960,"male",a2,"Math","MBA");
+
+ Address a3 = new Address();
+ Teacher teacher = new Teacher("Patricia","Lee",1980,"female",a3,"Biology");
+
+ GraduatedStudent st = new GraduatedStudent("Mik","Wei",1990,"male",a1,"History","MBA");
+
+ System.out.println(student.getName());
+
+ Pug poppy = new Pug("poppy", "Blue");
+ poppy.bark();
+ Chau prince = new Chau("prince",50);
+ prince.bark();
+
+ Person person2 = new Person();
+ person2.setName("Igor");
+
+ Dog dog = poppy;
+
+
+ }
+}
diff --git a/src/main/java/L12/Chau.java b/src/main/java/L12/Chau.java
new file mode 100644
index 0000000..4b618e2
--- /dev/null
+++ b/src/main/java/L12/Chau.java
@@ -0,0 +1,10 @@
+package L12;
+
+public class Chau extends Dog {
+ private int height;
+
+ public Chau(String name, int height) {
+ super(name);
+ this.height = height;
+ }
+}
diff --git a/src/main/java/L12/City.java b/src/main/java/L12/City.java
new file mode 100644
index 0000000..dcb424c
--- /dev/null
+++ b/src/main/java/L12/City.java
@@ -0,0 +1,6 @@
+package L12;
+
+public class City {
+ protected int population;
+ protected String name;
+}
diff --git a/src/main/java/L12/Dog.java b/src/main/java/L12/Dog.java
new file mode 100644
index 0000000..52885bd
--- /dev/null
+++ b/src/main/java/L12/Dog.java
@@ -0,0 +1,12 @@
+package L12;
+
+public class Dog {
+ private String name;
+
+ public Dog(String name) {
+ this.name = name;
+ }
+ public void bark(){
+ System.out.println(name + " wow-wow");
+ }
+}
diff --git a/src/main/java/L12/GraduatedStudent.java b/src/main/java/L12/GraduatedStudent.java
new file mode 100644
index 0000000..a488eba
--- /dev/null
+++ b/src/main/java/L12/GraduatedStudent.java
@@ -0,0 +1,7 @@
+package L12;
+
+public class GraduatedStudent extends Student {
+ public GraduatedStudent(String name, String lastName, int year, String gender, Address address, String major, String program) {
+ super(name, lastName, year, gender, address, major, program);
+ }
+}
diff --git a/src/main/java/L12/Person.java b/src/main/java/L12/Person.java
new file mode 100644
index 0000000..cbebc70
--- /dev/null
+++ b/src/main/java/L12/Person.java
@@ -0,0 +1,43 @@
+package L12;
+
+public class Person{
+ protected String name;
+ protected String lastName;
+ protected int year;
+ protected String gender;
+ protected Address address;
+
+ public Person() {}
+
+ public Person(String name, String lastName, int year, String gender, Address address) {
+ this.name = name;
+ this.lastName = lastName;
+ this.year = year;
+ this.gender = gender;
+ this.address = address;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public int getYear() {
+ return year;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public Address getAddress() {
+ return address;
+ }
+}
diff --git a/src/main/java/L12/Pug.java b/src/main/java/L12/Pug.java
new file mode 100644
index 0000000..52eaa79
--- /dev/null
+++ b/src/main/java/L12/Pug.java
@@ -0,0 +1,9 @@
+package L12;
+
+public class Pug extends Dog {
+ private String color;
+ public Pug(String name, String color) {
+ super(name);
+ this.color=color;
+ }
+}
diff --git a/src/main/java/L12/Student.java b/src/main/java/L12/Student.java
new file mode 100644
index 0000000..819fee6
--- /dev/null
+++ b/src/main/java/L12/Student.java
@@ -0,0 +1,20 @@
+package L12;
+
+public class Student extends Person{
+ protected String major;
+ protected String program;
+
+ public Student(String name, String lastName, int year, String gender, Address address, String major, String program) {
+ super(name, lastName, year, gender, address);
+ this.major = major;
+ this.program = program;
+ }
+
+ public String getMajor() {
+ return major;
+ }
+
+ public String getProgram() {
+ return program;
+ }
+}
diff --git a/src/main/java/L12/Teacher.java b/src/main/java/L12/Teacher.java
new file mode 100644
index 0000000..08a0bdd
--- /dev/null
+++ b/src/main/java/L12/Teacher.java
@@ -0,0 +1,14 @@
+package L12;
+
+public final class Teacher extends Person{
+ private String subject;
+
+ public Teacher(String name, String lastName, int year, String gender, Address address, String subject) {
+ super(name,lastName,year,gender,address);
+ this.subject = subject;
+ }
+
+ public String getSubject() {
+ return subject;
+ }
+}
diff --git a/src/main/java/L12/Village.java b/src/main/java/L12/Village.java
new file mode 100644
index 0000000..7bd95d9
--- /dev/null
+++ b/src/main/java/L12/Village.java
@@ -0,0 +1,4 @@
+package L12;
+
+public class Village extends City{
+}
diff --git a/src/main/java/L13/App.java b/src/main/java/L13/App.java
new file mode 100644
index 0000000..538cbb6
--- /dev/null
+++ b/src/main/java/L13/App.java
@@ -0,0 +1,24 @@
+package L13;
+
+public class App {
+ public static void main(String[] args) {
+// Person ivan = new Person(20);
+// ivan.breathe();
+// Child rose = new Child();
+// Human[] h1 ={ivan,rose};
+// Human vv = rose;
+// DeskLight l333 = new ArmDeskLampWithClamp(25, "Philips","L333",1);
+// DeskLight standard = new DeskLight(32, "Mono", "St");
+//
+// l333.StandardEBulb();
+// standard.StandardEBulb();
+
+ Dog chau = new ChauChau();
+ Dog colly = new Colly();
+
+ chau.bark();
+ colly.bark();
+
+
+ }
+}
diff --git a/src/main/java/L13/ArmDeskLampWithClamp.java b/src/main/java/L13/ArmDeskLampWithClamp.java
new file mode 100644
index 0000000..a5c2e37
--- /dev/null
+++ b/src/main/java/L13/ArmDeskLampWithClamp.java
@@ -0,0 +1,22 @@
+package L13;
+
+public class ArmDeskLampWithClamp extends DeskLight {
+ private int numberOfArms;
+ public ArmDeskLampWithClamp(int price, String brand, String model, int numberOfArms) {
+ super(price, brand, model);
+ this.numberOfArms = numberOfArms;
+ }
+
+ public void setNumberOfArms(int numberOfArms) {
+ this.numberOfArms = numberOfArms;
+ }
+
+ public int getNumberOfArms() {
+ return numberOfArms;
+ }
+
+ @Override
+ public void StandardEBulb() {
+ System.out.println("I use E14 bulb");
+ }
+}
diff --git a/src/main/java/L13/Bulb.java b/src/main/java/L13/Bulb.java
new file mode 100644
index 0000000..57a5540
--- /dev/null
+++ b/src/main/java/L13/Bulb.java
@@ -0,0 +1,5 @@
+package L13;
+
+public interface Bulb {
+ public void StandardEBulb();
+}
diff --git a/src/main/java/L13/ChauChau.java b/src/main/java/L13/ChauChau.java
new file mode 100644
index 0000000..0adaae6
--- /dev/null
+++ b/src/main/java/L13/ChauChau.java
@@ -0,0 +1,4 @@
+package L13;
+
+public class ChauChau extends Dog {
+}
diff --git a/src/main/java/L13/Child.java b/src/main/java/L13/Child.java
new file mode 100644
index 0000000..9216fe6
--- /dev/null
+++ b/src/main/java/L13/Child.java
@@ -0,0 +1,18 @@
+package L13;
+
+public class Child implements Human {
+ @Override
+ public void breathe() {
+
+ }
+
+ @Override
+ public void think() {
+
+ }
+
+ @Override
+ public int getAge() {
+ return 0;
+ }
+}
diff --git a/src/main/java/L13/Colly.java b/src/main/java/L13/Colly.java
new file mode 100644
index 0000000..98cec1a
--- /dev/null
+++ b/src/main/java/L13/Colly.java
@@ -0,0 +1,8 @@
+package L13;
+
+public class Colly extends Dog {
+ @Override
+ public void bark() {
+ System.out.println("weee-weee");
+ }
+}
diff --git a/src/main/java/L13/DeskLight.java b/src/main/java/L13/DeskLight.java
new file mode 100644
index 0000000..dbc5ecd
--- /dev/null
+++ b/src/main/java/L13/DeskLight.java
@@ -0,0 +1,47 @@
+package L13;
+
+public class DeskLight implements PowerSocket, Bulb {
+ protected int price;
+ protected String brand;
+ protected String model;
+
+ public DeskLight(int price, String brand, String model) {
+ this.price = price;
+ this.brand = brand;
+ this.model = model;
+ }
+
+ public int getPrice() {
+ return price;
+ }
+
+ public void setPrice(int price) {
+ this.price = price;
+ }
+
+ public String getBrand() {
+ return brand;
+ }
+
+ public void setBrand(String brand) {
+ this.brand = brand;
+ }
+
+ public String getModel() {
+ return model;
+ }
+
+ public void setModel(String model) {
+ this.model = model;
+ }
+
+ @Override
+ public void StandardEBulb() {
+ System.out.println("I use standard E27 Bulb");
+ }
+
+ @Override
+ public void standardUsSocket() {
+ System.out.println("I use standard US socket");
+ }
+}
diff --git a/src/main/java/L13/Dog.java b/src/main/java/L13/Dog.java
new file mode 100644
index 0000000..19731fd
--- /dev/null
+++ b/src/main/java/L13/Dog.java
@@ -0,0 +1,9 @@
+package L13;
+
+public class Dog {
+
+ public void bark(){
+ System.out.println("wow-wow");
+ }
+
+}
diff --git a/src/main/java/L13/Human.java b/src/main/java/L13/Human.java
new file mode 100644
index 0000000..6711b72
--- /dev/null
+++ b/src/main/java/L13/Human.java
@@ -0,0 +1,8 @@
+package L13;
+
+public interface Human {
+ //abstract method
+ public void breathe();
+ public void think();
+ public int getAge();
+}
diff --git a/src/main/java/L13/Person.java b/src/main/java/L13/Person.java
new file mode 100644
index 0000000..b412dac
--- /dev/null
+++ b/src/main/java/L13/Person.java
@@ -0,0 +1,25 @@
+package L13;
+
+public class Person implements Human{
+ private int age;
+
+ public Person(int age) {
+ this.age = age;
+ }
+
+ public void breathe() {
+ System.out.println("I can breathe");
+ }
+
+ public void think() {
+ System.out.println("I'm thinking");
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+}
diff --git a/src/main/java/L13/PowerSocket.java b/src/main/java/L13/PowerSocket.java
new file mode 100644
index 0000000..d3c5eb3
--- /dev/null
+++ b/src/main/java/L13/PowerSocket.java
@@ -0,0 +1,5 @@
+package L13;
+
+public interface PowerSocket {
+ public void standardUsSocket();
+}
diff --git a/src/main/java/L13/Student.java b/src/main/java/L13/Student.java
new file mode 100644
index 0000000..59c94c0
--- /dev/null
+++ b/src/main/java/L13/Student.java
@@ -0,0 +1,7 @@
+package L13;
+
+public class Student extends Person {
+ public Student(int age) {
+ super(age);
+ }
+}
diff --git a/src/main/java/L9/App.java b/src/main/java/L9/App.java
new file mode 100644
index 0000000..459907f
--- /dev/null
+++ b/src/main/java/L9/App.java
@@ -0,0 +1,70 @@
+package L9;
+
+public class App {
+ public static void main(String[] args) {
+ var xx = new String();
+ var arr = new int[10];
+ Car car = new Car();
+ int x= 5;
+
+ car.brand = "Toyota";
+ car.model = "Camry";
+ car.color = "Silver";
+ car.year = 2015;
+ car.price = 13000;
+
+ Car yourcar = new Car();
+ yourcar.model="Civic";
+ yourcar.brand="Honda";
+ yourcar.year = 2018;
+ yourcar.price = 18000;
+ yourcar.color = "White";
+
+ System.out.println("My new car is "+car.brand+" "+car.model +" "+ car.year);
+
+ Person anna = new Person();
+ anna.name="Anna";
+ anna.lastName="Ivanova";
+ anna.eyeColor="Blue";
+ anna.height=102;
+ anna.year=2015;
+
+ var boris = new Person();
+ boris.name = "Boris";
+ boris.lastName = "Petrov";
+ boris.year = 2015;
+ boris.height = 110;
+ boris.eyeColor = "Brown";
+
+ Fruit ff = new Fruit();
+ ff.name = "apple";
+ ff.color="green";
+
+ var sharik = new Dog();
+ sharik.name = "Sharik";
+ sharik.age = 2;
+ sharik.breed = "Dvorterier";
+
+ Dog lord = new Dog();
+ lord.name = "Lord";
+ lord.age = 3;
+ lord.breed = "Dog";
+
+
+ if(sharik.age > lord.age){
+ System.out.println("Sharik is older");
+ }else {
+ System.out.println("Lord is older");
+ }
+
+// lord.bark();
+// sharik.bark();
+
+ lord.sleep();
+ sharik.bark();
+
+ car.printInfo();
+ yourcar.drive();
+ anna.printInfo();
+ }
+}
diff --git a/src/main/java/L9/Car.java b/src/main/java/L9/Car.java
new file mode 100644
index 0000000..415ad58
--- /dev/null
+++ b/src/main/java/L9/Car.java
@@ -0,0 +1,18 @@
+package L9;
+
+public class Car {
+ public String brand;
+ public String model;
+ public int year;
+ public String color;
+ public double price;
+
+ public void drive(){
+ System.out.println(brand + " " + model +" is driving");
+ }
+
+ public void printInfo(){
+ System.out.println("\tBrand -> "+ brand+"\n\tModel -> "+
+ model + "\n\tYear -> "+year + "\n\tColor -> "+ color + "\n\tPrice -> "+price);
+ }
+}
diff --git a/src/main/java/L9/Dog.java b/src/main/java/L9/Dog.java
new file mode 100644
index 0000000..01ef118
--- /dev/null
+++ b/src/main/java/L9/Dog.java
@@ -0,0 +1,14 @@
+package L9;
+
+public class Dog {
+ public String name;
+ public String breed;
+ public int age;
+
+ public void bark(){
+ System.out.println(name + " is barking");
+ }
+ public void sleep(){
+ System.out.println(name + " is sleeping");
+ }
+}
diff --git a/src/main/java/L9/Fruit.java b/src/main/java/L9/Fruit.java
new file mode 100644
index 0000000..8d04410
--- /dev/null
+++ b/src/main/java/L9/Fruit.java
@@ -0,0 +1,6 @@
+package L9;
+
+public class Fruit {
+ public String name;
+ public String color;
+}
diff --git a/src/main/java/L9/Person.java b/src/main/java/L9/Person.java
new file mode 100644
index 0000000..edb717d
--- /dev/null
+++ b/src/main/java/L9/Person.java
@@ -0,0 +1,14 @@
+package L9;
+
+public class Person {
+ public String name;
+ public String lastName;
+ public int year;
+ public int height;
+ public String eyeColor;
+
+ public void printInfo(){
+ System.out.println("\tName -> "+ name+"\n\tLast Name -> "+
+ lastName + "\n\tYear -> "+year + "\n\tEye Color -> "+ eyeColor + "\n\tHeight -> "+height);
+ }
+}
diff --git a/src/main/java/Lesson8.java b/src/main/java/Lesson8.java
new file mode 100644
index 0000000..b79a095
--- /dev/null
+++ b/src/main/java/Lesson8.java
@@ -0,0 +1,39 @@
+public class Lesson8 {
+ public static void main(String[] args) {
+ System.out.println(sum(1,2));
+ int xx = sum(1,3,2);
+ int zz = sum(1,1,2,2);
+ String str = sum("abc","cde", "ddd");
+ System.out.println(str);
+ System.out.println(sum("ddd","eee",555));
+ System.out.println(sum("ddd","555"));
+ }
+
+ public static int sum(int a, int b){
+ return a+b;
+ }
+ public static double sum(double x, double z){
+ return x+z;
+ }
+ public static int sum(int a, int b, int c){
+ return a+b+c;
+ }
+ public static double sum(double x, double z, double y){
+ return x+z+y;
+ }
+ public static int sum(int a,int b, int c,int d){
+ return a+b+c+d;
+ }
+ public static double sum(double x, double z, double y, double a){
+ return x+z+y +a;
+ }
+ public static String sum(String a, String b){
+ return a+b;
+ }
+ public static String sum(String a, String b, String c){
+ return a+b+c;
+ }
+ public static String sum(String a, String b, int c){
+ return a+b+c;
+ }
+}
diff --git a/src/main/java/Types/App.java b/src/main/java/Types/App.java
new file mode 100644
index 0000000..2a20dd8
--- /dev/null
+++ b/src/main/java/Types/App.java
@@ -0,0 +1,32 @@
+package Types;
+
+import java.util.Date;
+import java.util.Random;
+
+public class App {
+
+ public static void main(String[] args) {
+ String str = " I'm a string";
+ int a = 5;
+ System.out.println(a);
+ Plane p = new Plane();
+ p.name="Boing";
+
+ System.out.println(p.getInfo());
+
+ int[] arr = {1,1,3};
+
+ for (int v:arr) {
+ System.out.println(v);
+ }
+ System.out.println(p);
+
+ Date xx = new Date();
+ Random random = new Random();
+
+ System.out.println(xx);
+
+
+
+ }
+}
diff --git a/src/main/java/Types/Plane.java b/src/main/java/Types/Plane.java
new file mode 100644
index 0000000..2db294f
--- /dev/null
+++ b/src/main/java/Types/Plane.java
@@ -0,0 +1,14 @@
+package Types;
+
+public class Plane {
+ public String name;
+
+ @Override
+ public String toString() {
+ return "name=" + name;
+ }
+
+ public String getInfo(){
+ return name;
+ }
+}
diff --git a/src/main/java/chw15/App.java b/src/main/java/chw15/App.java
new file mode 100644
index 0000000..635cb36
--- /dev/null
+++ b/src/main/java/chw15/App.java
@@ -0,0 +1,23 @@
+package chw15;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class App {
+ public static void main(String[] args) {
+ List people = new ArrayList<>();
+ var p1 = new Person("Vlad");
+ people.add(p1);
+
+ List fruits = new ArrayList<>();
+ fruits.add(new Fruit("Banana"));
+ fruits.add(new Fruit("Apple"));
+
+ Map iLoveFruit = new HashMap<>();
+ iLoveFruit.put(new Person("Ivan"),new Fruit("Peach"));
+
+
+ }
+}
diff --git a/src/main/java/chw15/Fruit.java b/src/main/java/chw15/Fruit.java
new file mode 100644
index 0000000..bb6d97d
--- /dev/null
+++ b/src/main/java/chw15/Fruit.java
@@ -0,0 +1,18 @@
+package chw15;
+
+public class Fruit {
+ private String name;
+
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Fruit(String name) {
+ this.name = name;
+ }
+}
diff --git a/src/main/java/chw15/Person.java b/src/main/java/chw15/Person.java
new file mode 100644
index 0000000..8901179
--- /dev/null
+++ b/src/main/java/chw15/Person.java
@@ -0,0 +1,9 @@
+package chw15;
+
+public class Person {
+ private String name;
+
+ public Person(String name) {
+ this.name = name;
+ }
+}
diff --git a/src/main/java/hw7.java b/src/main/java/hw7.java
new file mode 100644
index 0000000..1676bbc
--- /dev/null
+++ b/src/main/java/hw7.java
@@ -0,0 +1,57 @@
+import java.util.Arrays;
+import java.util.Collections;
+
+public class hw7 {
+ public static void main(String[] args) {
+ int[] arr1 = {1,4,9,9};
+ System.out.println(sum(arr1));
+
+ int[] arr2 = {55,63,11,11,21,231,234,121,456,789,0,3546,345,33232};
+ System.out.println(sum(arr2));
+
+ int[] arr3 = {0};
+ System.out.println(sum(arr3));
+
+ sort(arr1);
+ sort(arr2);
+ sort(arr3);
+
+ System.out.println();
+ System.out.println("min = "+ min_max(arr1)[0] + ", max = "+ min_max(arr1)[1]);
+ System.out.println("min = "+ min_max(arr2)[0] + ", max = "+ min_max(arr2)[1]);
+ System.out.println("min = "+ min_max(arr3)[0] + ", max = "+ min_max(arr3)[1]);
+ }
+
+ public static int[] min_max(int[]arr){
+ int min = arr[0];
+ int max = arr[0];
+
+ for (int v:arr){
+ if(v>max){
+ max=v;
+ }
+ if(v=0; i--){
+ System.out.print(arr[i]+" ");
+ }
+// for (int v:arr){
+// System.out.print(v+" ");
+// }
+ }
+ public static int sum(int[] arr){
+ int sum = 0;
+ for(int v:arr){
+ sum=sum+v;
+ }
+ return sum;
+ }
+}
diff --git a/src/main/java/hw8/app.java b/src/main/java/hw8/app.java
new file mode 100644
index 0000000..5650a13
--- /dev/null
+++ b/src/main/java/hw8/app.java
@@ -0,0 +1,7 @@
+package hw8;
+
+public class app {
+ public static void main(String[] args) {
+
+ }
+}
diff --git a/src/main/java/l14/App.java b/src/main/java/l14/App.java
new file mode 100644
index 0000000..ecac28b
--- /dev/null
+++ b/src/main/java/l14/App.java
@@ -0,0 +1,44 @@
+package l14;
+
+public final class App {
+ public static void main(String[] args) {
+ final int MYAGE = 457;
+
+ Colors car=Colors.WHITE;
+ Colors apple = Colors.RED;
+ Colors peach = Colors.GREEN;
+
+ Vehicle myCar = new Vehicle(Brand.MAZDA,"626",2018,car);
+
+ String str = "Red";// "RED", "red"
+
+ Integer a1 = 10;
+ int a2 = 10;
+
+ Double b1=2.3;
+ double b2=2.3;
+
+ Boolean c1 = true;
+ boolean c2= true;
+
+ Character d1='w';
+ char d2='w';
+
+ Object xx = Colors.WHITE;
+ Object xy = myCar;
+
+ Person per = new Student();
+ Person per1 = new Teacher();
+// Person per2 = new Person(); - нельзя создавать объект абстрактного класса!!!
+
+
+
+
+// Person person = new Person();
+
+
+
+ }
+
+
+}
diff --git a/src/main/java/l14/Brand.java b/src/main/java/l14/Brand.java
new file mode 100644
index 0000000..9b56f78
--- /dev/null
+++ b/src/main/java/l14/Brand.java
@@ -0,0 +1,11 @@
+package l14;
+
+public enum Brand {
+ MAZDA,
+ TOYOTA,
+ HONDA,
+ FORD,
+ MERCEDES,
+ BMW,
+ TESLA
+}
diff --git a/src/main/java/l14/Colors.java b/src/main/java/l14/Colors.java
new file mode 100644
index 0000000..20bfb20
--- /dev/null
+++ b/src/main/java/l14/Colors.java
@@ -0,0 +1,9 @@
+package l14;
+
+public enum Colors {
+ RED,
+ WHITE,
+ BLACK,
+ GREEN,
+ BLUE
+}
diff --git a/src/main/java/l14/Fruits.java b/src/main/java/l14/Fruits.java
new file mode 100644
index 0000000..6cd8351
--- /dev/null
+++ b/src/main/java/l14/Fruits.java
@@ -0,0 +1,8 @@
+package l14;
+
+public enum Fruits {
+ APPLE,
+ PEACH,
+ PINEAPPLE,
+ GRAPE
+}
diff --git a/src/main/java/l14/Person.java b/src/main/java/l14/Person.java
new file mode 100644
index 0000000..86a46c5
--- /dev/null
+++ b/src/main/java/l14/Person.java
@@ -0,0 +1,8 @@
+package l14;
+
+public abstract class Person{
+ protected String name;
+ protected String lastName;
+
+ public abstract void getFullName();
+}
diff --git a/src/main/java/l14/Student.java b/src/main/java/l14/Student.java
new file mode 100644
index 0000000..e9ae179
--- /dev/null
+++ b/src/main/java/l14/Student.java
@@ -0,0 +1,8 @@
+package l14;
+
+public class Student extends Person {
+ @Override
+ public void getFullName() {
+
+ }
+}
diff --git a/src/main/java/l14/Teacher.java b/src/main/java/l14/Teacher.java
new file mode 100644
index 0000000..ba12fa3
--- /dev/null
+++ b/src/main/java/l14/Teacher.java
@@ -0,0 +1,8 @@
+package l14;
+
+public class Teacher extends Person {
+ @Override
+ public void getFullName() {
+
+ }
+}
diff --git a/src/main/java/l14/Vehicle.java b/src/main/java/l14/Vehicle.java
new file mode 100644
index 0000000..24272c3
--- /dev/null
+++ b/src/main/java/l14/Vehicle.java
@@ -0,0 +1,15 @@
+package l14;
+
+public class Vehicle {
+ private Brand brand;
+ private String model;
+ private int year;
+ private Colors color;
+
+ public Vehicle(Brand brand, String model, int year, Colors color) {
+ this.brand = brand;
+ this.model = model;
+ this.year = year;
+ this.color = color;
+ }
+}
diff --git a/src/main/java/l15/App.java b/src/main/java/l15/App.java
new file mode 100644
index 0000000..69f90d1
--- /dev/null
+++ b/src/main/java/l15/App.java
@@ -0,0 +1,55 @@
+package l15;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class App {
+ public static void main(String[] args) {
+ List names = new ArrayList();
+ String[] namesOld = new String[5];
+
+ names.add("Shaun");
+ names.add("James");
+ names.add("John");
+ names.add("Poul");
+ names.add("Shaun");
+ System.out.println(names);
+ List colors = new ArrayList(Arrays.asList("Red", "Green"));
+
+// namesOld[0] = "James";
+// namesOld[1] = "John";
+ names.add(0,"David");
+ System.out.println(names);
+// System.out.println(names.get(0));
+ names.set(3,"Andrew");
+ System.out.println(names);
+// System.out.println(names.get(3));
+ names.remove(2);
+ System.out.println(names);
+// System.out.println(namesOld[0]);
+// System.out.println(names.get(2));
+ System.out.println(names.size());
+ names.remove("Shaun");
+ System.out.println(names);
+ System.out.println(names.contains("Shaun"));
+ System.out.println(names.contains("Freddy"));
+ List temp = new ArrayList<>();
+ System.out.println(names.size());
+
+ for (String v:names) {
+ System.out.println(v);
+ }
+
+ names.forEach(x-> System.out.println(x));
+
+ names.forEach(System.out::println);
+
+ List people = new ArrayList<>();
+
+// ArrayList xx = null;
+// xx.add(23.6);
+
+
+ }
+}
diff --git a/src/main/java/l15/Person.java b/src/main/java/l15/Person.java
new file mode 100644
index 0000000..a82178b
--- /dev/null
+++ b/src/main/java/l15/Person.java
@@ -0,0 +1,11 @@
+package l15;
+
+import java.util.List;
+
+public class Person {
+ public List names;
+
+ public Person(List names) {
+ this.names = names;
+ }
+}
diff --git a/src/main/java/l16/App.java b/src/main/java/l16/App.java
new file mode 100644
index 0000000..8a777d8
--- /dev/null
+++ b/src/main/java/l16/App.java
@@ -0,0 +1,53 @@
+package l16;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class App {
+ public static void main(String[] args) {
+ Map countries = new HashMap();
+ countries.put("USA","Washington");
+ countries.put("Germany","Berlin");
+ countries.put("Bulgaria","Sofia");
+
+ System.out.println(countries);
+ System.out.println(countries.size());
+ countries.replace("Germany","Bonn");
+ System.out.println(countries);
+ countries.put("Bulgaria","Tirana");
+ countries.put("Albania","Tirana");
+ System.out.println(countries);
+ System.out.println(countries.get("Germany"));
+ System.out.println(countries.get("GermanY"));
+ countries.remove("Bulgaria");
+ System.out.println(countries);
+
+ for (Map.Entry kv:countries.entrySet()){
+ System.out.println(kv.getKey());
+ System.out.println(kv.getValue());
+ }
+
+ for (String key: countries.keySet()){
+ System.out.println(key);
+ }
+
+ for (String value:countries.values()){
+ System.out.println(value);
+ }
+
+// Map colors= new HashMap<>();
+// colors.put(0,"Red");
+// colors.put(1,"Black");
+// colors.put(2,"Green");
+// colors.get(1);
+ Map colors = new HashMap<>();
+ colors.put("red","apple");
+ colors.put("black","coal");
+ colors.put("white","snow");
+ colors.put("green","apple");
+
+ Map employ = new HashMap<>();
+ employ.put(new Person(),new Job());
+
+ }
+}
diff --git a/src/main/java/l16/Job.java b/src/main/java/l16/Job.java
new file mode 100644
index 0000000..652dc09
--- /dev/null
+++ b/src/main/java/l16/Job.java
@@ -0,0 +1,4 @@
+package l16;
+
+public class Job {
+}
diff --git a/src/main/java/l16/Person.java b/src/main/java/l16/Person.java
new file mode 100644
index 0000000..1ade287
--- /dev/null
+++ b/src/main/java/l16/Person.java
@@ -0,0 +1,4 @@
+package l16;
+
+public class Person {
+}
diff --git a/src/main/java/l17/App.java b/src/main/java/l17/App.java
new file mode 100644
index 0000000..14994f4
--- /dev/null
+++ b/src/main/java/l17/App.java
@@ -0,0 +1,31 @@
+package l17;
+
+public class App {
+ public static void main(String[] args) {
+ int[] xx = {2,5,1};
+
+ try {
+ int vv = xx[1];
+ int vvv = 6/0;
+ System.out.println("I'm not wrong");
+ } catch (ArrayIndexOutOfBoundsException err){
+ System.out.println("I'm WRONG");
+ } catch (ArithmeticException err){
+ System.out.println("Divide by ZERO");
+ } catch (Exception err) {
+ System.out.println("Unknown exception");
+// throw new Exception("Errrrrr");
+ }
+ finally {
+ System.out.println("I will run in any case");
+ }
+
+ var p = new Person("Ivan", "Krotov");
+ var p2 = new Person("Doris","Sun");
+ Person.counter=10;
+ Person.setCounter(15);
+ System.out.println(Person.getCounter());
+
+ }
+
+}
diff --git a/src/main/java/l17/Person.java b/src/main/java/l17/Person.java
new file mode 100644
index 0000000..0a39e43
--- /dev/null
+++ b/src/main/java/l17/Person.java
@@ -0,0 +1,20 @@
+package l17;
+
+public class Person {
+ private String name;
+ private String lastName;
+ public static int counter;
+
+ public Person(String name, String lastName) {
+ this.name = name;
+ this.lastName = lastName;
+ }
+
+ public static int getCounter() {
+ return counter;
+ }
+
+ public static void setCounter(int counter) {
+ Person.counter = counter;
+ }
+}
diff --git a/src/main/java/string/App.java b/src/main/java/string/App.java
new file mode 100644
index 0000000..4d34874
--- /dev/null
+++ b/src/main/java/string/App.java
@@ -0,0 +1,36 @@
+package string;
+
+public class App {
+ public static void main(String[] args) {
+ String str = " Hello students, today is a good day ";
+ System.out.println(str.length()); //Size of string
+ System.out.println(str.contains("ello")); // Contains substring
+ System.out.println(str.replace('o','0')); // Replace single char
+ System.out.println(str.replace("ello","ELLO")); // Replace substring
+ System.out.println(str.charAt(0)); // Return char at index
+ System.out.println(str.compareTo("Hello students, today is a good day"));
+ boolean xx = "ddd".equals("ttt");
+ System.out.println(str.compareToIgnoreCase("HellO stUdents, today is a good day"));
+ System.out.println(str.concat(" - because today is Sunday"));
+ //System.out.println(str.indent(5)); // Set intend - отступ
+ var words = str.split(" ");
+ System.out.println(words[1]);
+ String url = "www.strings.com";
+ var domen = url.split("\\.")[1];
+ System.out.println(domen);
+ System.out.println(String.join("-",words));
+
+ System.out.println(str.trim()); // trim String
+ System.out.println(str.toLowerCase());
+ System.out.println(str.toUpperCase());
+ System.out.println(str.substring(2,5));
+ System.out.println(str.substring(str.length() - 3));
+
+ var name = "Some Name";
+
+ System.out.printf("My name is %s", name);
+ System.out.println();
+
+ System.out.println("My name is "+name);
+ }
+}
diff --git a/src/test/java/KoelSimpleTest.java b/src/test/java/KoelSimpleTest.java
new file mode 100644
index 0000000..6d49e66
--- /dev/null
+++ b/src/test/java/KoelSimpleTest.java
@@ -0,0 +1,98 @@
+import org.openqa.selenium.*;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.FluentWait;
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import java.time.Duration;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+public class KoelSimpleTest {
+ private WebDriver driver;
+ //private WebDriverWait explicitWait;
+ private FluentWait fluentWait;
+
+ @BeforeMethod
+ public void startUp() {
+ System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
+ driver = new ChromeDriver();
+
+ // explicitWait = new WebDriverWait(driver, 10);
+ fluentWait = new FluentWait(driver)
+ .withTimeout(Duration.ofSeconds(10))
+ .pollingEvery(Duration.ofMillis(100))
+ .ignoring(Exception.class)
+ .ignoring(StaleElementReferenceException.class);
+
+// driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
+ driver.get("https://koelapp.testpro.io/");
+ }
+
+ @AfterMethod
+ public void tearDown() throws InterruptedException {
+ Thread.sleep(5000);
+ driver.quit();
+ }
+
+ @Test(enabled = false)
+ public void login_CorrectCredentials_LoggedToApp() {
+ var email = driver.findElement(By.xpath("//*[@type='email']"));
+ email.sendKeys("testpro.user02@testpro.io");
+
+ var password = driver.findElement(By.xpath("//*[@type='password']"));
+ password.sendKeys("te$t$tudent02");
+
+ var loginButton = driver.findElement(By.xpath("//*[@type='submit']"));
+ loginButton.click();
+
+ var homeButton = driver.findElement(By.xpath("//*[@class='home active']"));
+ homeButton.click();
+ WebElement addButton = driver.findElement(By.cssSelector(".fa.fa-plus-circle"));
+ addButton.click();
+ WebElement newNameField = driver.findElement(By.xpath("//*[@class='create']/input"));
+ newNameField.sendKeys("hey");
+ newNameField.sendKeys(Keys.ENTER);
+
+
+ }
+
+ @Test(enabled = false)
+ public void login_CorrectCredentialsExplicitWait_LoggedToApp() {
+ var email = driver.findElement(By.xpath("//*[@type='email']"));
+ email.sendKeys("testpro.user02@testpro.io");
+
+ var password = driver.findElement(By.xpath("//*[@type='password']"));
+ password.sendKeys("te$t$tudent02");
+
+ var loginButton = driver.findElement(By.xpath("//*[@type='submit']"));
+ loginButton.click();
+
+ //explicitWait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@class='home active']")));
+ var homeButton = driver.findElement(By.xpath("//*[@class='home active']"));
+ homeButton.click();
+ }
+
+ @Test(enabled = true)
+ public void login_IncorrectCredentialsFluent_CantLogin() {
+ var email = driver.findElement(By.xpath("//*[@type='email']"));
+ email.sendKeys("testpro.user02@testpro.io");
+
+ var password = driver.findElement(By.xpath("//*[@type='password']"));
+ password.sendKeys("*************");
+
+ var loginButton = driver.findElement(By.xpath("//*[@type='submit']"));
+ loginButton.click();
+
+ fluentWait.until(x -> x.findElement(By.className("error")));
+ List error = driver.findElements(By.xpath("//*[@class='error']"));
+
+ Assert.assertEquals(error.size(), 1, "Element not found");
+ Assert.assertTrue(true);
+
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/SimpleTestSelenium.java b/src/test/java/SimpleTestSelenium.java
new file mode 100644
index 0000000..10bd831
--- /dev/null
+++ b/src/test/java/SimpleTestSelenium.java
@@ -0,0 +1,58 @@
+import org.openqa.selenium.By;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+public class SimpleTestSelenium {
+ private WebDriver driver;
+
+ @BeforeMethod
+ public void startUp() {
+ System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
+ driver = new ChromeDriver();
+ driver.get("https://google.com");
+ }
+
+ @AfterMethod
+ public void tearDown() throws InterruptedException {
+ Thread.sleep(2000);
+ driver.quit();
+ }
+
+ @Test(enabled = true)
+ public void googleSearch_SearchForSelenium_SearchPageOpened() throws InterruptedException {
+ WebElement searchField = driver.findElement(By.xpath("//*[@name='q']"));
+ searchField.sendKeys("selenium");
+ searchField.sendKeys(Keys.ENTER);
+ Thread.sleep(2000);
+
+ WebElement images = driver.findElement(By.xpath("//*[text()='Images']"));
+ images.click();
+ driver.findElement(By.xpath("//div[contains(text(),'Web Scraping Using Selenium - Towards ...')]")).click();
+
+ Assert.assertEquals(driver.getTitle(), "selenium - Google Search");
+
+ }
+
+ @Test(enabled = false)
+ public void googleSearch_SearchForJava_SearchPageOpened() {
+ WebElement searchField = driver.findElement(By.xpath("//*[@name='q']"));
+ searchField.sendKeys("Java");
+ searchField.sendKeys(Keys.RETURN);
+ Assert.assertEquals(driver.getTitle(), "Java - Google Search");
+
+ }
+
+ @Test(enabled = false)
+ public void udemy_SearchForJava_SearchPageOpened() throws InterruptedException {
+ Thread.sleep(3000);
+ WebElement searchField = driver.findElement(By.cssSelector("[data-purpose*='search-box']"));
+ searchField.sendKeys("Java");
+ searchField.sendKeys(Keys.RETURN);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/UnitTestExample.java b/src/test/java/UnitTestExample.java
new file mode 100644
index 0000000..491871c
--- /dev/null
+++ b/src/test/java/UnitTestExample.java
@@ -0,0 +1,29 @@
+import L10.Person;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class UnitTestExample {
+ @Test
+ public void testResultFromPerson(){
+ //Arrange
+ Person person = new Person("Ivan","Krotov");
+
+ //Act
+ String res = person.result(2,1,1);
+
+ //Assert
+ Assert.assertEquals(res,"Ivan4");
+ }
+
+ @Test
+ public void testLastResultMethodFromPersonInLesson10(){
+ //Arrange
+ Person doris = new Person("Doris","Sun");
+
+ //Act
+ String res = doris.lastResult(8,"finish");
+
+ //Assert
+ Assert.assertEquals(res,"Sun8finish");
+ }
+}
diff --git a/src/test/java/apiTest/PlaylistTestDb.java b/src/test/java/apiTest/PlaylistTestDb.java
new file mode 100644
index 0000000..1ba914e
--- /dev/null
+++ b/src/test/java/apiTest/PlaylistTestDb.java
@@ -0,0 +1,70 @@
+package apiTest;
+
+import com.google.gson.Gson;
+import helpers.Data;
+import helpers.DbAdapter;
+import helpers.TestData;
+import helpers.Token;
+import io.restassured.http.ContentType;
+import io.restassured.path.json.JsonPath;
+import io.restassured.response.Response;
+import models.CreatePlaylistRequest;
+import models.CreatePlaylistResponse;
+import models.Playlist;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+
+import java.sql.SQLException;
+
+import static io.restassured.RestAssured.given;
+
+public class PlaylistTestDb {
+ private int playlist_id;
+ private String token;
+ @BeforeMethod
+ public void startUp(){
+ token = Token.retrieveToken("testpro.user02@testpro.io","te$t$tudent02");
+ }
+ @AfterMethod
+ public void tearDown(){
+ given()
+ .baseUri("https://koelapp.testpro.io/")
+ .header("Authorization","Bearer "+token)
+ .basePath("api/playlist/"+playlist_id)
+ .when()
+ .delete();
+ }
+ @Test
+ public void playlistTestsDb_CreatePlaylist_PlaylistCreated() throws SQLException {
+ String playlistName = TestData.randomString();
+ String[] rules = {};
+ var createPlaylist = new CreatePlaylistRequest(playlistName,rules);
+ var requestBody = new Gson().toJson(createPlaylist);
+
+ Response response = given()
+ .baseUri("https://koelapp.testpro.io/")
+ .header("Authorization","Bearer "+token)
+ .basePath("api/playlist")
+ .contentType(ContentType.JSON)
+ .body(requestBody)
+ .when()
+ .post()
+ .then()
+ .statusCode(200)
+ .extract()
+ .response();
+
+ JsonPath jsonPath = response.jsonPath();
+ CreatePlaylistResponse createdPlaylist = jsonPath.getObject("$",CreatePlaylistResponse.class);
+ playlist_id=createdPlaylist.id;
+ Assert.assertEquals(createPlaylist.name,createdPlaylist.name);
+ Assert.assertEquals(createdPlaylist.songs.length,0);
+ Playlist playlist = DbAdapter.getPlaylistsById(playlist_id);
+ Assert.assertNotNull(playlist,"Object not found in DB");
+
+ Assert.assertEquals(playlistName,playlist.name);
+ }
+}
diff --git a/src/test/java/apiTest/PlaylistTests.java b/src/test/java/apiTest/PlaylistTests.java
new file mode 100644
index 0000000..cb4b126
--- /dev/null
+++ b/src/test/java/apiTest/PlaylistTests.java
@@ -0,0 +1,99 @@
+package apiTest;
+
+import com.google.gson.Gson;
+import helpers.Data;
+import helpers.TestData;
+import helpers.Token;
+import io.restassured.http.ContentType;
+import io.restassured.http.Header;
+import io.restassured.http.Headers;
+import io.restassured.path.json.JsonPath;
+import io.restassured.response.Response;
+import models.CreatePlaylistRequest;
+import models.CreatePlaylistResponse;
+import models.DataResponse;
+import models.Playlist;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static io.restassured.RestAssured.*;
+
+public class PlaylistTests {
+ private String token;
+ private int playlist_id;
+// @Parameters({"email","password"})
+ @BeforeMethod
+ public void init(){
+ token = Token.retrieveToken("testpro.user02@testpro.io","te$t$tudent02");
+ }
+ @AfterMethod
+ public void tearDown(){
+ Response response = given()
+ .baseUri("https://koelapp.testpro.io/")
+ .header("Authorization","Bearer "+token)
+ .basePath("api/playlist/"+playlist_id)
+ .when()
+ .delete();
+ }
+
+ @Test
+ public void playlistTests_CreatePlaylist_PlaylistCreated(){
+ String playlistName = TestData.randomString();
+ String[] rules = {};
+ var playlist = new CreatePlaylistRequest(playlistName,rules);
+ var requestBody = new Gson().toJson(playlist);
+
+ Response response = given()
+ .baseUri("https://koelapp.testpro.io/")
+ .header("Authorization","Bearer "+token)
+ .basePath("api/playlist")
+ .contentType(ContentType.JSON)
+ .body(requestBody)
+ .when()
+ .post()
+ .then()
+ .statusCode(200)
+ .extract()
+ .response();
+
+ JsonPath jsonPath = response.jsonPath();
+ CreatePlaylistResponse createdPlaylist = jsonPath.getObject("$",CreatePlaylistResponse.class);
+ playlist_id=createdPlaylist.id;
+ Assert.assertEquals(playlist.name,createdPlaylist.name);
+ Assert.assertEquals(createdPlaylist.songs.length,0);
+ var data = Data.getData();
+ List playlists = new ArrayList(Arrays.asList(data.playlists));
+ int count=0;
+ for(Playlist pl:playlists){
+ if(pl.id==createdPlaylist.id){
+ count++;
+ }
+ }
+ Assert.assertEquals(count,1);
+ }
+
+ @Test
+ public void getAllData_DataReturned(){
+ Response response = given()
+ .baseUri("https://koelapp.testpro.io/")
+ .header("Authorization","Bearer "+token)
+ .basePath("api/data")
+ .when()
+ .get()
+ .then()
+ .statusCode(200)
+ .extract()
+ .response();
+
+ JsonPath jsonPath = response.jsonPath();
+ var data = jsonPath.getObject("$", DataResponse.class);
+ System.out.println(data.playlists.length);
+ }
+
+}
diff --git a/src/test/java/apiTest/RenamePlaylist.java b/src/test/java/apiTest/RenamePlaylist.java
new file mode 100644
index 0000000..cef460c
--- /dev/null
+++ b/src/test/java/apiTest/RenamePlaylist.java
@@ -0,0 +1,74 @@
+package apiTest;
+
+import com.google.gson.Gson;
+import helpers.Data;
+import helpers.TestData;
+import helpers.Token;
+import io.restassured.http.ContentType;
+import io.restassured.path.json.JsonPath;
+import io.restassured.response.Response;
+import models.CreatePlaylistResponse;
+import models.Playlist;
+import models.RenamePlaylistRequest;
+import models.RenamePlaylistResponse;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import static io.restassured.RestAssured.given;
+
+public class RenamePlaylist {
+ private int id;
+ private String token;
+ @BeforeMethod
+ public void startUp(){
+ String name = TestData.randomString();
+ var createdPlaylist = Data.createPlaylist(name);
+ id = createdPlaylist.id;
+ token = Token.retrieveToken("testpro.user02@testpro.io","te$t$tudent02");
+ }
+ @AfterMethod
+ public void tearDown(){
+ Response response = given()
+ .baseUri("https://koelapp.testpro.io/")
+ .header("Authorization","Bearer "+token)
+ .basePath("api/playlist/"+id)
+ .when()
+ .delete();
+ }
+
+ @Test
+ public void renamePlaylist_PlaylistRenamed(){
+ String newName = TestData.randomString();
+ RenamePlaylistRequest renamePlaylistRequest = new RenamePlaylistRequest(newName);
+ var requestBody = new Gson().toJson(renamePlaylistRequest);
+
+ Response response = given()
+ .baseUri("https://koelapp.testpro.io/")
+ .header("Authorization","Bearer "+token)
+ .basePath("api/playlist/"+id)
+ .contentType(ContentType.JSON)
+ .body(requestBody)
+ .when()
+ .put()
+ .then()
+ .statusCode(200)
+ .extract()
+ .response();
+
+ JsonPath jsonPath = response.jsonPath();
+ var playlist = jsonPath.getObject("$", RenamePlaylistResponse.class);
+ Assert.assertEquals(playlist.name,newName);
+ Assert.assertEquals(playlist.id,id);
+
+ var data = Data.getData();
+ int count = 0;
+ for(Playlist pl: data.playlists){
+ if(pl.name.equals(newName)){
+ count++;
+ }
+ }
+ Assert.assertEquals(count,1);
+ }
+}
diff --git a/src/test/java/apiTest/TestDb.java b/src/test/java/apiTest/TestDb.java
new file mode 100644
index 0000000..78986a6
--- /dev/null
+++ b/src/test/java/apiTest/TestDb.java
@@ -0,0 +1,26 @@
+package apiTest;
+
+import helpers.DbAdapter;
+import models.Playlist;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import java.sql.SQLException;
+
+public class TestDb {
+ @Test
+ public void getArtists_ListOfArtistReturned() throws SQLException {
+ DbAdapter.getArtists();
+ }
+
+ @Test
+ public void getPlaylists_ListOfPlaylists_returned() throws SQLException {
+ DbAdapter.getAllPlaylists();
+ }
+
+ @Test
+ public void getSinglePlaylistById() throws SQLException {
+ Playlist pl = DbAdapter.getPlaylistsById(19);
+ Assert.assertEquals(pl.name,"Dima");
+ }
+}
diff --git a/src/test/java/browserFactory/BrowserFactory.java b/src/test/java/browserFactory/BrowserFactory.java
new file mode 100644
index 0000000..f0922c2
--- /dev/null
+++ b/src/test/java/browserFactory/BrowserFactory.java
@@ -0,0 +1,50 @@
+package browserFactory;
+
+import enums.BrowserType;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.chrome.ChromeOptions;
+import org.openqa.selenium.firefox.FirefoxDriver;
+import org.openqa.selenium.firefox.FirefoxOptions;
+import org.openqa.selenium.opera.OperaDriver;
+import org.openqa.selenium.opera.OperaOptions;
+
+public class BrowserFactory {
+ public static WebDriver createWebDriver(BrowserType browserType) throws NoSuchMethodException {
+ switch (browserType){
+ case FIREFOX:
+ return getFirefoxDriver();
+ case CHROME:
+ return getChromeDriver();
+ case OPERA:
+ return getOperaDriver();
+ default: throw new NoSuchMethodException("Browser driver not found");
+ }
+ }
+
+ private static WebDriver getOperaDriver() {
+ OperaOptions options = new OperaOptions();
+ options.addArguments("window-size=1400,1000");
+// options.addArguments("--headless");
+ System.setProperty("webdriver.opera.driver","operadriver.exe");
+ return new OperaDriver(options);
+ }
+
+ private static WebDriver getChromeDriver() {
+ ChromeOptions options = new ChromeOptions();
+ options.addArguments("window-size=1400,1000");
+// options.addArguments("--headless");
+ System.setProperty("webdriver.chrome.driver","chromedriver.exe");
+ return new ChromeDriver(options);
+
+ }
+
+ private static WebDriver getFirefoxDriver() {
+ FirefoxOptions options = new FirefoxOptions();
+ options.addArguments("--width=1400");
+ options.addArguments("--height=1000");
+ options.addArguments("--headless");
+ System.setProperty("webdriver.gecko.driver","geckodriver.exe");
+ return new FirefoxDriver(options);
+ }
+}
diff --git a/src/test/java/enums/BrowserType.java b/src/test/java/enums/BrowserType.java
new file mode 100644
index 0000000..e3b6d96
--- /dev/null
+++ b/src/test/java/enums/BrowserType.java
@@ -0,0 +1,7 @@
+package enums;
+
+public enum BrowserType {
+ CHROME,
+ FIREFOX,
+ OPERA,
+}
diff --git a/src/test/java/helpers/Data.java b/src/test/java/helpers/Data.java
new file mode 100644
index 0000000..cba1b7d
--- /dev/null
+++ b/src/test/java/helpers/Data.java
@@ -0,0 +1,52 @@
+package helpers;
+
+import com.google.gson.Gson;
+import io.restassured.http.ContentType;
+import io.restassured.path.json.JsonPath;
+import io.restassured.response.Response;
+import models.CreatePlaylistRequest;
+import models.CreatePlaylistResponse;
+import models.DataResponse;
+
+import static io.restassured.RestAssured.given;
+
+public class Data {
+ public static DataResponse getData(){
+ String token = Token.retrieveToken("testpro.user02@testpro.io","te$t$tudent02");
+ Response response = given()
+ .baseUri("https://koelapp.testpro.io/")
+ .header("Authorization","Bearer "+token)
+ .basePath("api/data")
+ .when()
+ .get()
+ .then()
+ .statusCode(200)
+ .extract()
+ .response();
+
+ JsonPath jsonPath = response.jsonPath();
+ return jsonPath.getObject("$", DataResponse.class);
+ }
+ public static CreatePlaylistResponse createPlaylist(String playlistName){
+ String token = Token.retrieveToken("testpro.user02@testpro.io","te$t$tudent02");
+ String[] rules = {};
+ var playlist = new CreatePlaylistRequest(playlistName,rules);
+ var requestBody = new Gson().toJson(playlist);
+
+ Response response = given()
+ .baseUri("https://koelapp.testpro.io/")
+ .header("Authorization","Bearer "+token)
+ .basePath("api/playlist")
+ .contentType(ContentType.JSON)
+ .body(requestBody)
+ .when()
+ .post()
+ .then()
+ .statusCode(200)
+ .extract()
+ .response();
+
+ JsonPath jsonPath = response.jsonPath();
+ return jsonPath.getObject("$",CreatePlaylistResponse.class);
+ }
+}
diff --git a/src/test/java/helpers/DbAdapter.java b/src/test/java/helpers/DbAdapter.java
new file mode 100644
index 0000000..48b9c82
--- /dev/null
+++ b/src/test/java/helpers/DbAdapter.java
@@ -0,0 +1,100 @@
+package helpers;
+
+import models.Artist;
+import models.Playlist;
+
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.List;
+
+public class DbAdapter {
+ static final String JDBC_DRIVER = "org.mariadb.jdbc.Driver";
+ static final String DB_URL = "jdbc:mariadb://koelapp.testpro.io/dbkoel";
+ static final String USER = "dbuser02";
+ static final String PASS = "pa$$02";
+
+ static Connection conn = null;
+ static Statement stmt = null;
+
+ public static List getArtists() throws SQLException {
+ List artists = new ArrayList();
+ try {
+ Class.forName(JDBC_DRIVER);
+ conn = DriverManager.getConnection(DB_URL, USER, PASS);
+ stmt = conn.createStatement();
+
+ String sqlQuery = "SELECT * FROM artists";
+ ResultSet rs = stmt.executeQuery(sqlQuery);
+ while (rs.next()) {
+ String name = rs.getString("name");
+ int id = rs.getInt("id");
+
+ Artist artist = new Artist(id,name);
+ artists.add(artist);
+ }
+ } catch (SQLException | ClassNotFoundException err) {
+ err.printStackTrace();
+ } finally {
+ if (conn != null) {
+ conn.close();
+ }
+ }
+ return artists;
+ }
+
+ public static List getAllPlaylists() throws SQLException {
+ List playlists = new ArrayList();
+ try {
+ Class.forName(JDBC_DRIVER);
+ conn = DriverManager.getConnection(DB_URL, USER, PASS);
+ stmt = conn.createStatement();
+
+ String sqlQuery = "SELECT * FROM playlists";
+ ResultSet rs = stmt.executeQuery(sqlQuery);
+ while (rs.next()) {
+ String name = rs.getString("name");
+ int id = rs.getInt("id");
+
+ Playlist playlist = new Playlist(id,name);
+ playlists.add(playlist);
+ }
+ } catch (SQLException | ClassNotFoundException err) {
+ err.printStackTrace();
+ } finally {
+ if (conn != null) {
+ conn.close();
+ }
+ }
+ return playlists;
+ }
+
+ public static Playlist getPlaylistsById(int id) throws SQLException {
+ Playlist returnedPlaylist = new Playlist();
+ try {
+ Class.forName(JDBC_DRIVER);
+ conn = DriverManager.getConnection(DB_URL, USER, PASS);
+ stmt = conn.createStatement();
+
+ String sqlQuery = "SELECT id, name FROM playlists WHERE id="+id;
+ List pls = new ArrayList<>();
+ ResultSet rs = stmt.executeQuery(sqlQuery);
+ while (rs.next()) {
+ String name = rs.getString("name");
+
+ Playlist playlist = new Playlist(id,name);
+ pls.add(playlist);
+ }
+ if(pls.size()==0){
+ return null;
+ }
+ returnedPlaylist = pls.get(0);
+ } catch (SQLException | ClassNotFoundException err) {
+ err.printStackTrace();
+ } finally {
+ if (conn != null) {
+ conn.close();
+ }
+ }
+ return returnedPlaylist;
+ }
+}
diff --git a/src/test/java/helpers/GetScreenshot.java b/src/test/java/helpers/GetScreenshot.java
new file mode 100644
index 0000000..af50ba9
--- /dev/null
+++ b/src/test/java/helpers/GetScreenshot.java
@@ -0,0 +1,21 @@
+package helpers;
+
+import org.apache.commons.io.FileUtils;
+import org.openqa.selenium.OutputType;
+import org.openqa.selenium.TakesScreenshot;
+import org.openqa.selenium.WebDriver;
+
+import java.io.File;
+import java.io.IOException;
+
+public class GetScreenshot {
+ public static void capture(WebDriver driver, String screenshotName){
+ try {
+ TakesScreenshot takesScreenshot = (TakesScreenshot) driver;
+ File file = takesScreenshot.getScreenshotAs((OutputType.FILE));
+ FileUtils.copyFile(file, new File("./screenshots/" + screenshotName +".png"));
+ } catch (IOException e) {
+ System.out.println("File IO problem" + e.getMessage());
+ }
+ }
+}
diff --git a/src/test/java/helpers/TestData.java b/src/test/java/helpers/TestData.java
new file mode 100644
index 0000000..63093f2
--- /dev/null
+++ b/src/test/java/helpers/TestData.java
@@ -0,0 +1,12 @@
+package helpers;
+
+import org.apache.commons.lang3.RandomStringUtils;
+
+public class TestData {
+ public static String randomString(){
+ int length = 10;
+ boolean useLetters = true;
+ boolean useNumbers = false;
+ return RandomStringUtils.random(length, useLetters, useNumbers);
+ }
+}
diff --git a/src/test/java/helpers/Token.java b/src/test/java/helpers/Token.java
new file mode 100644
index 0000000..cbb507e
--- /dev/null
+++ b/src/test/java/helpers/Token.java
@@ -0,0 +1,35 @@
+package helpers;
+
+import com.google.gson.Gson;
+import io.restassured.http.ContentType;
+import io.restassured.path.json.JsonPath;
+import io.restassured.response.Response;
+import models.TokenRequest;
+import models.TokenResponse;
+
+import static io.restassured.RestAssured.given;
+
+public class Token {
+ public static String retrieveToken(String login, String pwd){
+ String token = "";
+ var credentials = new TokenRequest(login,pwd);
+ var requestBody = new Gson().toJson(credentials);
+
+ Response response = given()
+ .baseUri("https://koelapp.testpro.io/")
+ .basePath("api/me")
+ .contentType(ContentType.JSON)
+ .body(requestBody)
+ .when()
+ .post()
+ .then()
+ .statusCode(200)
+ .extract()
+ .response();
+
+ JsonPath jsonPath = response.jsonPath();
+ var responseBody = jsonPath.getObject("$", TokenResponse.class);
+ token = responseBody.token;
+ return token;
+ }
+}
diff --git a/src/test/java/listeners/Listeners.java b/src/test/java/listeners/Listeners.java
new file mode 100644
index 0000000..24a56a1
--- /dev/null
+++ b/src/test/java/listeners/Listeners.java
@@ -0,0 +1,49 @@
+package listeners;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.testng.ITestContext;
+import org.testng.ITestListener;
+import org.testng.ITestResult;
+import tests.HomepageTests;
+
+public class Listeners implements ITestListener {
+ private static Logger logger = LogManager.getLogger(HomepageTests.class);
+ @Override
+ public void onTestStart(ITestResult iTestResult) {
+ System.out.println("test started "+iTestResult.getName());
+ logger.warn("Test started " + iTestResult.getName());
+
+ }
+
+ @Override
+ public void onTestSuccess(ITestResult iTestResult) {
+
+ }
+
+ @Override
+ public void onTestFailure(ITestResult iTestResult) {
+ logger.fatal("Test failed " + iTestResult.getName());
+
+ }
+
+ @Override
+ public void onTestSkipped(ITestResult iTestResult) {
+ logger.error("Test skipped "+ iTestResult.getName());
+ }
+
+ @Override
+ public void onTestFailedButWithinSuccessPercentage(ITestResult iTestResult) {
+
+ }
+
+ @Override
+ public void onStart(ITestContext iTestContext) {
+
+ }
+
+ @Override
+ public void onFinish(ITestContext iTestContext) {
+
+ }
+}
diff --git a/src/test/java/listeners/RetryAnalyzer.java b/src/test/java/listeners/RetryAnalyzer.java
new file mode 100644
index 0000000..c5122dd
--- /dev/null
+++ b/src/test/java/listeners/RetryAnalyzer.java
@@ -0,0 +1,18 @@
+package listeners;
+
+import org.testng.IRetryAnalyzer;
+import org.testng.ITestResult;
+
+public class RetryAnalyzer implements IRetryAnalyzer {
+ private int retryCount = 0;
+ private static final int maxRetryCount = 2;
+
+ @Override
+ public boolean retry(ITestResult result) {
+ if (retryCount < maxRetryCount) {
+ retryCount++;
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/src/test/java/models/Albums.java b/src/test/java/models/Albums.java
new file mode 100644
index 0000000..f8c5e7d
--- /dev/null
+++ b/src/test/java/models/Albums.java
@@ -0,0 +1,7 @@
+package models;
+
+public class Albums {
+ public int id;
+ public int artist_id;
+ public String name;
+}
diff --git a/src/test/java/models/Artist.java b/src/test/java/models/Artist.java
new file mode 100644
index 0000000..0d1435a
--- /dev/null
+++ b/src/test/java/models/Artist.java
@@ -0,0 +1,11 @@
+package models;
+
+public class Artist {
+ public int id;
+ public String name;
+
+ public Artist(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+}
diff --git a/src/test/java/models/CreatePlaylistRequest.java b/src/test/java/models/CreatePlaylistRequest.java
new file mode 100644
index 0000000..31ac39d
--- /dev/null
+++ b/src/test/java/models/CreatePlaylistRequest.java
@@ -0,0 +1,11 @@
+package models;
+
+public class CreatePlaylistRequest {
+ public String name;
+ public String[] rules;
+
+ public CreatePlaylistRequest(String name, String[] rules) {
+ this.name = name;
+ this.rules = rules;
+ }
+}
diff --git a/src/test/java/models/CreatePlaylistResponse.java b/src/test/java/models/CreatePlaylistResponse.java
new file mode 100644
index 0000000..13bfd79
--- /dev/null
+++ b/src/test/java/models/CreatePlaylistResponse.java
@@ -0,0 +1,13 @@
+package models;
+
+public class CreatePlaylistResponse {
+ public String name;
+ public int id;
+ public String[] songs;
+
+ public CreatePlaylistResponse(String name, int id, String[] songs) {
+ this.name = name;
+ this.id = id;
+ this.songs = songs;
+ }
+}
diff --git a/src/test/java/models/CurrentUser.java b/src/test/java/models/CurrentUser.java
new file mode 100644
index 0000000..c0c2d6b
--- /dev/null
+++ b/src/test/java/models/CurrentUser.java
@@ -0,0 +1,9 @@
+package models;
+
+public class CurrentUser {
+ public int id;
+ public String name;
+ public String email;
+ public boolean is_admin;
+ public Preferences[] preferences;
+}
diff --git a/src/test/java/models/DataResponse.java b/src/test/java/models/DataResponse.java
new file mode 100644
index 0000000..93c9da7
--- /dev/null
+++ b/src/test/java/models/DataResponse.java
@@ -0,0 +1,21 @@
+package models;
+
+public class DataResponse {
+ public Albums[] albums;
+ public boolean allowDownload;
+ public Artist[] artists;
+ public String cdnUrl;
+ public CurrentUser currentUser;
+ public String currentVersion;
+ public Interaction[] interactions;
+ public String latestVersion;
+ public Playlist[] playlists;
+ public String[] recentlyPlayed;
+ public Settings[] settings;
+ public Song[] songs;
+ public boolean supportsTranscoding;
+ public boolean useLastfm;
+ public boolean useYouTube;
+ public boolean useiTunes;
+ public User[] users;
+}
diff --git a/src/test/java/models/Interaction.java b/src/test/java/models/Interaction.java
new file mode 100644
index 0000000..1d81c36
--- /dev/null
+++ b/src/test/java/models/Interaction.java
@@ -0,0 +1,7 @@
+package models;
+
+public class Interaction {
+ public String song_id;
+ public boolean liked;
+ public int play_count;
+}
diff --git a/src/test/java/models/Playlist.java b/src/test/java/models/Playlist.java
new file mode 100644
index 0000000..8cd8428
--- /dev/null
+++ b/src/test/java/models/Playlist.java
@@ -0,0 +1,17 @@
+package models;
+
+public class Playlist {
+ public int id;
+ public String name;
+ public String[] rules;
+ public boolean is_smart;
+
+ public Playlist(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ public Playlist() {
+
+ }
+}
diff --git a/src/test/java/models/Preferences.java b/src/test/java/models/Preferences.java
new file mode 100644
index 0000000..c6fd35a
--- /dev/null
+++ b/src/test/java/models/Preferences.java
@@ -0,0 +1,5 @@
+package models;
+
+public class Preferences {
+ public String lastfm_session_key;
+}
diff --git a/src/test/java/models/RenamePlaylistRequest.java b/src/test/java/models/RenamePlaylistRequest.java
new file mode 100644
index 0000000..1d85203
--- /dev/null
+++ b/src/test/java/models/RenamePlaylistRequest.java
@@ -0,0 +1,9 @@
+package models;
+
+public class RenamePlaylistRequest {
+ public String name;
+
+ public RenamePlaylistRequest(String name) {
+ this.name = name;
+ }
+}
diff --git a/src/test/java/models/RenamePlaylistResponse.java b/src/test/java/models/RenamePlaylistResponse.java
new file mode 100644
index 0000000..2deccb5
--- /dev/null
+++ b/src/test/java/models/RenamePlaylistResponse.java
@@ -0,0 +1,6 @@
+package models;
+
+public class RenamePlaylistResponse {
+ public int id;
+ public String name;
+}
diff --git a/src/test/java/models/Settings.java b/src/test/java/models/Settings.java
new file mode 100644
index 0000000..8463c32
--- /dev/null
+++ b/src/test/java/models/Settings.java
@@ -0,0 +1,5 @@
+package models;
+
+public class Settings {
+ public String media_path;
+}
diff --git a/src/test/java/models/Song.java b/src/test/java/models/Song.java
new file mode 100644
index 0000000..662dd4e
--- /dev/null
+++ b/src/test/java/models/Song.java
@@ -0,0 +1,12 @@
+package models;
+
+public class Song {
+ public String id;
+ public int album_id;
+ public int artist_id;
+ public String title;
+ public String created_at;
+ public int disc;
+ public int track;
+ public double length;
+}
diff --git a/src/test/java/models/TokenRequest.java b/src/test/java/models/TokenRequest.java
new file mode 100644
index 0000000..98b4446
--- /dev/null
+++ b/src/test/java/models/TokenRequest.java
@@ -0,0 +1,11 @@
+package models;
+
+public class TokenRequest {
+ public String email;
+ public String password;
+
+ public TokenRequest(String email, String password) {
+ this.email = email;
+ this.password = password;
+ }
+}
diff --git a/src/test/java/models/TokenResponse.java b/src/test/java/models/TokenResponse.java
new file mode 100644
index 0000000..e0b3edd
--- /dev/null
+++ b/src/test/java/models/TokenResponse.java
@@ -0,0 +1,5 @@
+package models;
+
+public class TokenResponse {
+ public String token;
+}
diff --git a/src/test/java/models/User.java b/src/test/java/models/User.java
new file mode 100644
index 0000000..bbfe9a4
--- /dev/null
+++ b/src/test/java/models/User.java
@@ -0,0 +1,8 @@
+package models;
+
+public class User {
+ public int id;
+ public String name;
+ public String email;
+ public boolean is_admin;
+}
diff --git a/src/test/java/pageObjects/BasePage.java b/src/test/java/pageObjects/BasePage.java
new file mode 100644
index 0000000..778bef4
--- /dev/null
+++ b/src/test/java/pageObjects/BasePage.java
@@ -0,0 +1,28 @@
+package pageObjects;
+
+import org.openqa.selenium.ElementClickInterceptedException;
+import org.openqa.selenium.NoSuchElementException;
+import org.openqa.selenium.StaleElementReferenceException;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.ui.FluentWait;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+import java.time.Duration;
+
+public class BasePage {
+ protected WebDriver driver;
+ protected FluentWait fluentWait;
+ protected final String url = "https://koelapp.testpro.io/";
+ protected WebDriverWait explicitWait;
+
+ public BasePage(WebDriver driver) {
+ this.driver = driver;
+ explicitWait = new WebDriverWait(driver, 10);
+ this.fluentWait = new FluentWait(this.driver)
+ .withTimeout(Duration.ofSeconds(10))
+ .pollingEvery(Duration.ofMillis(100))
+ .ignoring(ElementClickInterceptedException.class)
+ .ignoring(StaleElementReferenceException.class)
+ .ignoring(NoSuchElementException.class);
+ }
+}
diff --git a/src/test/java/pageObjects/HomePage.java b/src/test/java/pageObjects/HomePage.java
new file mode 100644
index 0000000..721f8fb
--- /dev/null
+++ b/src/test/java/pageObjects/HomePage.java
@@ -0,0 +1,60 @@
+package pageObjects;
+
+import org.openqa.selenium.*;
+import org.openqa.selenium.interactions.Actions;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+
+public class HomePage extends BasePage{
+ public HomePage(WebDriver driver) {
+ super(driver);
+ }
+ public boolean isHomepage(){
+ try{
+ fluentWait.until(x->x.findElement(By.xpath(HomePageSelectors.homeButtonXpath)));
+ } catch (TimeoutException err) {
+ return false;
+ }
+ return true;
+ }
+ public WebElement getPlusButton(){
+ explicitWait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(HomePageSelectors.plusButtonCssSelector)));
+ return driver.findElement(By.cssSelector(HomePageSelectors.plusButtonCssSelector));
+ }
+ private WebElement getNewPlaylistNameField(){
+ return driver.findElement(By.xpath(HomePageSelectors.newPlaylistFieldXpath));
+ }
+ private String getPlaylistXpath(String name){
+ return "//a[text()='"+name+"']";
+ }
+ public String createNewPlaylist(String name) {
+ getPlusButton().click();
+ getNewPlaylistNameField().sendKeys(name);
+ getNewPlaylistNameField().sendKeys(Keys.ENTER);
+ String str = driver.getCurrentUrl();
+ return str.split("/")[5];
+ }
+ public boolean isPlaylistCreated(String name){
+ var list = driver.findElements(By.xpath(getPlaylistXpath(name)));
+ return list.size()>0;
+ }
+
+ public void leftHandScrollDown(String name) {
+ JavascriptExecutor js = (JavascriptExecutor) driver;
+ WebElement playlist = driver.findElement(By.xpath(getPlaylistXpath(name)));
+ js.executeScript("arguments[0].scrollIntoView();", playlist);
+
+// Actions actions = new Actions(driver);
+// actions.moveToElement(playlist);
+// actions.perform();
+ }
+
+ public void renamePlayList(String oldName, String newName) {
+ WebElement playlist = driver.findElement(By.xpath(getPlaylistXpath(oldName)));
+ Actions actions = new Actions(driver);
+ actions.doubleClick(playlist).perform();
+ WebElement textField = driver.findElement(By.xpath("//*[@class='playlist playlist editing']/input"));
+ textField.sendKeys(Keys.CONTROL + "a");
+ textField.sendKeys(newName);
+ textField.sendKeys(Keys.ENTER);
+ }
+}
diff --git a/src/test/java/pageObjects/HomePageSelectors.java b/src/test/java/pageObjects/HomePageSelectors.java
new file mode 100644
index 0000000..aeb8949
--- /dev/null
+++ b/src/test/java/pageObjects/HomePageSelectors.java
@@ -0,0 +1,7 @@
+package pageObjects;
+
+public class HomePageSelectors {
+ public static final String homeButtonXpath = "//*[@class='home active']";
+ public static final String plusButtonCssSelector = ".fa.fa-plus-circle";
+ public static final String newPlaylistFieldXpath = "//*[@class='create']/*";
+}
diff --git a/src/test/java/pageObjects/LoginPage.java b/src/test/java/pageObjects/LoginPage.java
new file mode 100644
index 0000000..1634d85
--- /dev/null
+++ b/src/test/java/pageObjects/LoginPage.java
@@ -0,0 +1,47 @@
+package pageObjects;
+
+import org.openqa.selenium.*;
+
+
+public class LoginPage extends BasePage{
+ private final String emailXpath = "//*[@type='email']";
+ private final String passwordXpath = "//*[@type='password']";
+ private final String loginButtonXpath = "//*[@type='submit']";
+ private final String errorXpath = "//*[@class='error']";
+
+ public LoginPage(WebDriver driver) {
+ super(driver);
+ }
+
+ public void openPage(){
+ driver.get(url);
+ }
+
+ private WebElement getEmailField(){
+ return driver.findElement(By.xpath(emailXpath));
+ }
+
+ private WebElement getPasswordField(){
+ return driver.findElement(By.xpath(passwordXpath));
+ }
+
+ private WebElement getLoginButton(){
+ return driver.findElement(By.xpath(loginButtonXpath));
+ }
+
+ public HomePage login(String email, String password){
+ getEmailField().sendKeys(email);
+ getPasswordField().sendKeys(password);
+ getLoginButton().click();
+ return new HomePage(driver);
+ }
+
+ public boolean isError() {
+ try{
+ fluentWait.until(x->x.findElement(By.xpath(errorXpath)));
+ } catch (TimeoutException err) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/src/test/java/tests/BaseTest.java b/src/test/java/tests/BaseTest.java
new file mode 100644
index 0000000..84e7fcd
--- /dev/null
+++ b/src/test/java/tests/BaseTest.java
@@ -0,0 +1,36 @@
+package tests;
+
+import browserFactory.BrowserFactory;
+import enums.BrowserType;
+import helpers.GetScreenshot;
+import org.openqa.selenium.WebDriver;
+import org.testng.ITestResult;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Parameters;
+
+public class BaseTest {
+ protected WebDriver driver;
+ @Parameters({"browser"})
+ @BeforeMethod
+ public void startUp(String browserName) throws NoSuchMethodException {
+ BrowserType browser;
+ switch (browserName){
+ case "CHROME": browser=BrowserType.CHROME;
+ break;
+ case "FIREFOX": browser = BrowserType.FIREFOX;
+ break;
+ default: throw new NoSuchMethodException("Browser not defined");
+ }
+
+ driver = BrowserFactory.createWebDriver(browser);
+ }
+
+ @AfterMethod
+ public void tearDown(ITestResult iTestResult){
+ if(iTestResult.getStatus() == ITestResult.FAILURE) {
+ GetScreenshot.capture(driver, iTestResult.getName());
+ }
+ driver.quit();
+ }
+}
diff --git a/src/test/java/tests/HomepageTests.java b/src/test/java/tests/HomepageTests.java
new file mode 100644
index 0000000..f113be6
--- /dev/null
+++ b/src/test/java/tests/HomepageTests.java
@@ -0,0 +1,62 @@
+package tests;
+
+import io.restassured.http.Header;
+import io.restassured.response.Response;
+import listeners.RetryAnalyzer;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.testng.Assert;
+import org.testng.ITestResult;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.Parameters;
+import org.testng.annotations.Test;
+import pageObjects.HomePage;
+import pageObjects.LoginPage;
+
+import static io.restassured.RestAssured.given;
+
+public class HomepageTests extends BaseTest{
+ private String id;
+ private static Logger logger = LogManager.getLogger(HomepageTests.class);
+ @AfterMethod
+ public void tearDown(){
+ Header header = new Header("Authorization","Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjMwMCwiaXNzIjoiaHR0cHM6Ly9rb2VsYXBwLnRlc3Rwcm8uaW8vYXBpL21lIiwiaWF0IjoxNTg5ODU0MDM5LCJleHAiOjE1OTA0NTg4MzksIm5iZiI6MTU4OTg1NDAzOSwianRpIjoiMFFhWEVNYXVEanBjRVNJdSJ9.bZpEG2hGAYhFEpO3sYCa08xl7SQU_Kk7FYQYRXImGOg");
+ Response response =
+ given()
+ .baseUri("https://koelapp.testpro.io/")
+ .header(header)
+ .when()
+ .delete("api/playlist/"+id)
+ .then()
+ .statusCode(200)
+ .extract()
+ .response();
+ }
+ @Parameters({"email","password","playlist"})
+ @Test(retryAnalyzer = RetryAnalyzer.class)
+ public void loginTest_createNewPlaylist_newPlaylistCreated(String login, String pwd, String playlist) {
+ logger.info("test started");
+ LoginPage loginPage = new LoginPage(driver);
+ logger.info("login page created");
+ loginPage.openPage();
+ logger.info("login page opened");
+ HomePage homePage = loginPage.login(login,pwd);
+ logger.info("logged to app");
+ id = homePage.createNewPlaylist(playlist);
+ logger.info("playlist created");
+
+ Assert.assertTrue(homePage.isPlaylistCreated(playlist));
+ }
+ @Parameters({"email","password","playlist", "new-playlist"})
+ @Test
+ public void scrollDown(String login, String pwd, String playlist, String newPlaylist){
+ LoginPage loginPage = new LoginPage(driver);
+ loginPage.openPage();
+ HomePage homePage = loginPage.login(login,pwd);
+ homePage.createNewPlaylist(playlist);
+ homePage.leftHandScrollDown(playlist);
+ homePage.renamePlayList(playlist,newPlaylist);
+ Assert.assertTrue(homePage.isPlaylistCreated(newPlaylist));
+
+ }
+}
diff --git a/src/test/java/tests/HomepageTests_new.java b/src/test/java/tests/HomepageTests_new.java
new file mode 100644
index 0000000..998a796
--- /dev/null
+++ b/src/test/java/tests/HomepageTests_new.java
@@ -0,0 +1,28 @@
+package tests;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import pageObjects.HomePage;
+import pageObjects.LoginPage;
+
+public class HomepageTests_new extends BaseTest{
+ @Test
+ public void new_loginTest_createNewPlaylist_newPlaylistCreated() {
+ LoginPage loginPage = new LoginPage(driver);
+ loginPage.openPage();
+ HomePage homePage = loginPage.login("testpro.user02@testpro.io","te$t$tudent02");
+ homePage.createNewPlaylist("HeyYoPlaylist");
+ Assert.assertTrue(homePage.isPlaylistCreated("HeyYoPlaylist"));
+ }
+ @Test
+ public void new_scrollDown(){
+ LoginPage loginPage = new LoginPage(driver);
+ loginPage.openPage();
+ HomePage homePage = loginPage.login("testpro.user02@testpro.io","te$t$tudent02");
+ homePage.createNewPlaylist("zzHeyYoPlaylist");
+ homePage.leftHandScrollDown("zzHeyYoPlaylist");
+ homePage.renamePlayList("zzHeyYoPlaylist","newName");
+ Assert.assertTrue(homePage.isPlaylistCreated("newName"));
+
+ }
+}
diff --git a/src/test/java/tests/LoginTests.java b/src/test/java/tests/LoginTests.java
new file mode 100644
index 0000000..95fe41c
--- /dev/null
+++ b/src/test/java/tests/LoginTests.java
@@ -0,0 +1,63 @@
+package tests;
+
+import listeners.RetryAnalyzer;
+import org.testng.Assert;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Parameters;
+import org.testng.annotations.Test;
+import pageObjects.HomePage;
+import pageObjects.LoginPage;
+
+
+public class LoginTests extends BaseTest{
+
+ @Parameters({"email","password"})
+ @Test
+ public void loginTest_correctCredentials_loggedToApp(String login, String pwd){
+ LoginPage loginPage = new LoginPage(driver);
+ loginPage.openPage();
+ HomePage homePage = loginPage.login(login,pwd);
+ Assert.assertTrue(homePage.isHomepage());
+ }
+ @Parameters({"email","wrong-password"})
+ @Test(retryAnalyzer = RetryAnalyzer.class)
+ public void loginTest_incorrectCredentials_notLoggedToApp(String login, String pwd){
+ LoginPage loginPage = new LoginPage(driver);
+ loginPage.openPage();
+ loginPage.login(login,pwd);
+ Assert.assertTrue(loginPage.isError());
+ }
+ @Test (retryAnalyzer = RetryAnalyzer.class, enabled = false)
+ public void test_Fails(){
+ Assert.assertTrue(false);
+ }
+ @DataProvider(name = "Summing")
+ public Object[][] createData1() {
+ return new Object[][] {
+ { 3, 3, 6 },
+ { 2,8,10},
+ {10,12,22},
+ {58,3,61},
+ {5,6,10},
+ {-10,-15,-25}
+ };
+ }
+ @Test(dataProvider = "Summing")
+ public void test_Sum(int a, int b, int c){
+ int xx = a + b;
+ Assert.assertEquals(xx,c);
+ }
+ @DataProvider(name = "StringSumming")
+ public Object[][] createData2() {
+ return new Object[][] {
+ {"ST","ing","STing"},
+ {"5","6","11"},
+ {"55","6","556"}
+ };
+ }
+ @Test(dataProvider = "StringSumming")
+ public void test_StringSum(String a, String b, String c){
+ String xx = a + b;
+ Assert.assertEquals(xx,c);
+ }
+}
diff --git a/src/test/java/tests/LoginTests_new.java b/src/test/java/tests/LoginTests_new.java
new file mode 100644
index 0000000..594c3cb
--- /dev/null
+++ b/src/test/java/tests/LoginTests_new.java
@@ -0,0 +1,27 @@
+package tests;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import pageObjects.HomePage;
+import pageObjects.LoginPage;
+
+
+public class LoginTests_new extends BaseTest{
+
+ @Test
+ public void new_loginTest_correctCredentials_loggedToApp(){
+ LoginPage loginPage = new LoginPage(driver);
+ loginPage.openPage();
+ HomePage homePage = loginPage.login("testpro.user02@testpro.io","te$t$tudent02");
+ Assert.assertTrue(homePage.isHomepage());
+ }
+ @Test
+ public void new_loginTest_incorrectCredentials_notLoggedToApp(){
+ LoginPage loginPage = new LoginPage(driver);
+ loginPage.openPage();
+ loginPage.login("testpro.user02@testpro.io","********");
+ Assert.assertTrue(loginPage.isError());
+ }
+
+
+}
diff --git a/src/test/java/tests/PetstoreApiTests.java b/src/test/java/tests/PetstoreApiTests.java
new file mode 100644
index 0000000..03c1ff0
--- /dev/null
+++ b/src/test/java/tests/PetstoreApiTests.java
@@ -0,0 +1,25 @@
+package tests;
+
+import io.restassured.response.Response;
+import org.testng.annotations.Test;
+import static io.restassured.RestAssured.*;
+
+public class PetstoreApiTests {
+ @Test
+ public void getPetById(){
+ Response response =
+ given()
+ .baseUri("https://petstore.swagger.io/")
+ .when()
+ .get("v2/pet/111")
+
+ .then()
+ .statusCode(200)
+ .extract()
+ .response();
+// Response response = get("https://petstore.swagger.io/v2/pet/111")
+// .thenReturn();
+ var jsonPath = response.jsonPath();
+ System.out.println(jsonPath.prettify());
+ }
+}
diff --git a/src/test/resources/log4j2.xml b/src/test/resources/log4j2.xml
new file mode 100644
index 0000000..3c7c329
--- /dev/null
+++ b/src/test/resources/log4j2.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+ %d %p %c{1.} [%t] %m%n
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/testngChrome.xml b/testngChrome.xml
new file mode 100644
index 0000000..b0ffd44
--- /dev/null
+++ b/testngChrome.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/testngFirefox.xml b/testngFirefox.xml
new file mode 100644
index 0000000..41a6703
--- /dev/null
+++ b/testngFirefox.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file