diff --git a/DesignPatternsSolution/DesignPatternsSolution.sln b/DesignPatternsSolution/DesignPatternsSolution.sln
index e5b257d..75f0446 100644
--- a/DesignPatternsSolution/DesignPatternsSolution.sln
+++ b/DesignPatternsSolution/DesignPatternsSolution.sln
@@ -1,11 +1,11 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.24720.0
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Exercise", "Exercise\Exercise.csproj", "{EA98A53A-F8CD-4539-9E57-1FEF2D64F13A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Execise.Tests", "Execise.Tests\Execise.Tests.csproj", "{464FBD03-CA8B-4926-8F69-66726819DA02}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Exercise.Tests", "Execise.Tests\Exercise.Tests.csproj", "{464FBD03-CA8B-4926-8F69-66726819DA02}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documents", "Documents", "{8C88EFFA-EC68-42ED-A482-A7B8964538E8}"
ProjectSection(SolutionItems) = preProject
diff --git a/DesignPatternsSolution/Execise.Tests/Execise.Tests.csproj b/DesignPatternsSolution/Execise.Tests/Exercise.Tests.csproj
similarity index 98%
rename from DesignPatternsSolution/Execise.Tests/Execise.Tests.csproj
rename to DesignPatternsSolution/Execise.Tests/Exercise.Tests.csproj
index 71e68ac..4f78f0d 100644
--- a/DesignPatternsSolution/Execise.Tests/Execise.Tests.csproj
+++ b/DesignPatternsSolution/Execise.Tests/Exercise.Tests.csproj
@@ -8,7 +8,7 @@
Properties
Execise.Tests
Execise.Tests
- v4.5.2
+ v4.5
512
{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
10.0
@@ -16,6 +16,7 @@
$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages
False
UnitTest
+
true
diff --git a/DesignPatternsSolution/Execise.Tests/UnitTests.cs b/DesignPatternsSolution/Execise.Tests/UnitTests.cs
index 0a3b80e..09c2f7b 100644
--- a/DesignPatternsSolution/Execise.Tests/UnitTests.cs
+++ b/DesignPatternsSolution/Execise.Tests/UnitTests.cs
@@ -1,7 +1,7 @@
using Exercise;
using Microsoft.VisualStudio.TestTools.UnitTesting;
-namespace Execise.Tests
+namespace Exercise.Tests
{
[TestClass]
public class UnitTests
@@ -12,18 +12,28 @@ public void LibraryShouldBeSingleton()
{
//check that when you create a Library instance second time,
//you get exactly the same instance as for a very first time
+ Library library1 = Library.getInstance();
+ Library library2 = Library.getInstance();
+
+ Assert.AreEqual(library1, library2);
}
//test that an book was registered successfully by checking the returned Id value is not -1
[TestMethod]
public void BookShouldRegister()
{
+ Book book = new Book("Mr. Smart", "My Book", 1985, 20);
+ int result = RegistrationRepository.Register(book);
+ Assert.AreNotEqual(-1, result);
}
//test that an customer was registered successfully by checking the returned Id value is not -1
[TestMethod]
public void CustomerShouldRegister()
{
+ Customer customer = new Customer("John Doe", "123 Fourth St.");
+ int result = RegistrationRepository.Register(customer);
+ Assert.AreNotEqual(-1, result);
}
//test that a book can be borrowed
@@ -32,7 +42,17 @@ public void CanBorrowBook()
{
//create a borrowable book with available amount more than one.
//Run BorrowOne method of the BookBorrowable instance. Check that total amount was reduced by one.
-
- }
+
+ Book myBook = new Book("Glen Miller", "My Book", 1990, 50);
+
+ int oldCount = myBook.AvailableAmount;
+
+ Borrowable bookBorrowable = new Borrowable(null, new BorrowOne(myBook));
+ bookBorrowable.BorrowOne();
+
+ int newCount = myBook.AvailableAmount;
+
+ Assert.AreEqual(oldCount - 1, newCount);
+ }
}
}
diff --git a/DesignPatternsSolution/Exercise/BookBorrowable.cs b/DesignPatternsSolution/Exercise/BookBorrowable.cs
index 21bd9cf..5c6236e 100644
--- a/DesignPatternsSolution/Exercise/BookBorrowable.cs
+++ b/DesignPatternsSolution/Exercise/BookBorrowable.cs
@@ -1,7 +1,48 @@
namespace Exercise
{
- public class BookBorrowable
+ public abstract class ABorrowable
{
-
+ public virtual void BorrowOne() { }
+ protected BorrowOne borrowOneProcedure;
+ public ABorrowable(BorrowOne borrowOneProcedure)
+ {
+ this.borrowOneProcedure = borrowOneProcedure;
+ }
+ }
+
+ public class Borrowable : ABorrowable
+ {
+ private ABorrowable borrowableToExtend;
+
+ public Borrowable(ABorrowable borrowable, BorrowOne borrowOneProcedure)
+ : base(borrowOneProcedure)
+ {
+ borrowableToExtend = borrowable;
+ }
+
+ public override void BorrowOne()
+ {
+ if (borrowableToExtend != null)
+ {
+ borrowableToExtend.BorrowOne();
+ }
+
+ borrowOneProcedure.borrowOne();
+ }
+ }
+
+ public class BorrowOne
+ {
+ private LibObject libObject;
+
+ public BorrowOne(LibObject libObject)
+ {
+ this.libObject = libObject;
+ }
+
+ public void borrowOne()
+ {
+ this.libObject.AvailableAmount--;
+ }
}
}
diff --git a/DesignPatternsSolution/Exercise/Exercise.csproj b/DesignPatternsSolution/Exercise/Exercise.csproj
index d2cc582..87a49ae 100644
--- a/DesignPatternsSolution/Exercise/Exercise.csproj
+++ b/DesignPatternsSolution/Exercise/Exercise.csproj
@@ -9,9 +9,10 @@
Properties
Exercise
Exercise
- v4.5.2
+ v4.5
512
true
+
AnyCPU
diff --git a/DesignPatternsSolution/Exercise/Item.cs b/DesignPatternsSolution/Exercise/Item.cs
index 92c21e1..eefa80c 100644
--- a/DesignPatternsSolution/Exercise/Item.cs
+++ b/DesignPatternsSolution/Exercise/Item.cs
@@ -10,13 +10,23 @@ public Item(int amount, int year)
}
}
- public class Book : Item
+ public class Book : Item, IRegistarable
{
- public Book(string author, string title, int year, int amount) : base(amount, year)
+ public Book(string author, string title, int year, int amount)
+ : base(amount, year)
{
NameOrTitle = title;
Author = author;
}
public string Author { get; set; }
+
+ public RegisteredObject GetRegistrationInfo()
+ {
+ RegisteredObject registeredObject = new RegisteredObject();
+ registeredObject.Info = this.NameOrTitle;
+ registeredObject.AvailableAmount = this.AvailableAmount;
+
+ return registeredObject;
+ }
}
}
diff --git a/DesignPatternsSolution/Exercise/Library.cs b/DesignPatternsSolution/Exercise/Library.cs
index 1d9dde4..1252e2f 100644
--- a/DesignPatternsSolution/Exercise/Library.cs
+++ b/DesignPatternsSolution/Exercise/Library.cs
@@ -2,9 +2,14 @@
{
public class Library
{
- //implement Singleton to make sure only one library will exist
+ private static Library library = new Library();
-
+ private Library() { }
+
+ public static Library getInstance()
+ {
+ return library;
+ }
//Implement Register method by utilizing RegistrationRepository (complete missing parts)
public int Register()
diff --git a/DesignPatternsSolution/Exercise/Person.cs b/DesignPatternsSolution/Exercise/Person.cs
index 2c2ed21..685975f 100644
--- a/DesignPatternsSolution/Exercise/Person.cs
+++ b/DesignPatternsSolution/Exercise/Person.cs
@@ -2,7 +2,7 @@
namespace Exercise
{
- public class Customer : LibObject
+ public class Customer : LibObject, IRegistarable
{
public string Address { get; set; }
public DateTime RegisteredAt { get; set; }
@@ -19,5 +19,14 @@ public void SetId(int id)
{
ObjectId = id;
}
+
+ public RegisteredObject GetRegistrationInfo()
+ {
+ RegisteredObject registeredObject = new RegisteredObject();
+ registeredObject.Info = this.NameOrTitle;
+ registeredObject.AvailableAmount = this.AvailableAmount;
+
+ return registeredObject;
+ }
}
}