Commit 64e7f96

mokhan <mokhan@ce5e1baf-6525-42e4-a1b2-857ea38da20a>
2009-02-28 20:37:52
can't figure out why the one test is broken.
git-svn-id: https://svn.xp-dev.com/svn/mokhan-mo.money@35 ce5e1baf-6525-42e4-a1b2-857ea38da20a
1 parent eb9e279
trunk/product/MyMoney/DataAccess/db40/spiking/db40_spike_specs.cs
@@ -30,7 +30,7 @@ namespace MyMoney.DataAccess.db40.spiking
                             results = database.Query<ITestObject>().databind();
                         };
 
-        it should_be_able_to_load_the_original_contents = () => assertion_extensions.should_contain(results, original);
+        it should_be_able_to_load_the_original_contents = () => results.should_contain(original);
 
         it they_should_be_equal = () => new TestObject(99, "gretzky").Equals(new TestObject(99, "gretzky"));
 
trunk/product/MyMoney/DataAccess/db40/ObjectRepository.cs
@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using System.Linq;
 using Db4objects.Db4o;
 using MyMoney.Domain.Core;
 using MyMoney.Infrastructure.Extensions;
@@ -17,15 +18,21 @@ namespace MyMoney.DataAccess.db40
 
         public IEnumerable<T> all<T>() where T : IEntity
         {
-            open_session_with_database().Query<T>().each(x => this.log().debug("found item: {0}", x));
-            return open_session_with_database().Query<T>();
+            using (var container = open_session_with_database())
+            {
+                container.Query<T>().each(x => this.log().debug("found item: {0}", x));
+                return container.Query<T>().ToList();
+            }
         }
 
         public void save<T>(T item) where T : IEntity
         {
             this.log().debug("saving: {0}, {1}", item.ToString(), item.Id);
-            open_session_with_database().Store(item);
-            open_session_with_database().Commit();
+            using (var container = open_session_with_database())
+            {
+                container.Store(item);
+                container.Commit();
+            }
         }
 
         IObjectContainer open_session_with_database()
trunk/product/MyMoney/DataAccess/db40/ObjectRepositorySpecs.cs
@@ -4,7 +4,7 @@ using jpboodhoo.bdd.contexts;
 using MyMoney.Domain.Core;
 using MyMoney.Testing.MetaData;
 using MyMoney.Testing.spechelpers.contexts;
-using assertion_extensions=MyMoney.Testing.spechelpers.core.assertion_extensions;
+using MyMoney.Testing.spechelpers.core;
 using mocking_extensions=MyMoney.Testing.spechelpers.core.mocking_extensions;
 
 namespace MyMoney.DataAccess.db40
@@ -26,8 +26,8 @@ namespace MyMoney.DataAccess.db40
     {
         it should_return_all_the_items_from_the_database = () =>
                                                                {
-                                                                   assertion_extensions.should_contain(result, first_item);
-                                                                   assertion_extensions.should_contain(result, second_item);
+                                                                   result.should_contain(first_item);
+                                                                   result.should_contain(second_item);
                                                                };
 
         context c = () =>
@@ -36,9 +36,8 @@ namespace MyMoney.DataAccess.db40
                             second_item = an<IEntity>();
                             var session = an<IObjectContainer>();
 
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(factory, x => x.create()), session);
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(session, x => x.Query<IEntity>()), new List<IEntity>
-                                                                                           {first_item, second_item});
+                            factory.is_told_to(x => x.create()).it_will_return(session);
+                            session.is_told_to(x => x.Query<IEntity>()).it_will_return(new List<IEntity> {first_item, second_item});
                         };
 
         because b = () => { result = sut.all<IEntity>(); };
trunk/product/MyMoney/DataAccess/db40/session_factory.cs
@@ -1,57 +0,0 @@
-using System;
-using Castle.Core;
-using Db4objects.Db4o;
-using MyMoney.Presentation.Model.Projects;
-using MyMoney.Utility.Core;
-
-namespace MyMoney.DataAccess.db40
-{
-    public interface ISessionFactory : IFactory<IObjectContainer>
-    {
-    }
-
-    [Singleton]
-    public class session_factory : ISessionFactory, IDisposable
-    {
-        readonly IDatabaseConfiguration database_configuration;
-        readonly IConnectionFactory connection_factory;
-        IFile currently_opened_database_file;
-        IObjectContainer opened_connection;
-
-        public session_factory(IDatabaseConfiguration database_configuration, IConnectionFactory connection_factory)
-        {
-            this.database_configuration = database_configuration;
-            this.connection_factory = connection_factory;
-        }
-
-        public IObjectContainer create()
-        {
-            var path_to_the_database = database_configuration.path_to_the_database();
-            if (path_to_the_database.Equals(currently_opened_database_file))
-            {
-                return opened_connection;
-            }
-            return open_connection_to(path_to_the_database);
-        }
-
-        IObjectContainer open_connection_to(IFile path_to_the_database)
-        {
-            close_the_current_connection();
-            currently_opened_database_file = path_to_the_database;
-            opened_connection = connection_factory.open_connection_to(currently_opened_database_file);
-            return opened_connection;
-        }
-
-        public void Dispose()
-        {
-            close_the_current_connection();
-        }
-
-        void close_the_current_connection()
-        {
-            if (null == opened_connection) return;
-            opened_connection.Close();
-            opened_connection.Dispose();
-        }
-    }
-}
\ No newline at end of file
trunk/product/MyMoney/DataAccess/db40/session_factory_specs.cs
@@ -1,104 +0,0 @@
-using Db4objects.Db4o;
-using jpboodhoo.bdd.contexts;
-using MyMoney.Presentation.Model.Projects;
-using MyMoney.Testing.MetaData;
-using MyMoney.Testing.spechelpers.contexts;
-using MyMoney.Testing.spechelpers.core;
-using mocking_extensions=MyMoney.Testing.spechelpers.core.mocking_extensions;
-
-namespace MyMoney.DataAccess.db40
-{
-    [Concern(typeof (session_factory))]
-    public abstract class behaves_like_a_session_factory : concerns_for<ISessionFactory, session_factory>
-    {
-        public override ISessionFactory create_sut()
-        {
-            return new session_factory(database_configuration, connection_factory);
-        }
-
-        context c = () =>
-                        {
-                            connection_factory = the_dependency<IConnectionFactory>();
-                            database_configuration = the_dependency<IDatabaseConfiguration>();
-                        };
-
-        protected static IConnectionFactory connection_factory;
-        protected static IDatabaseConfiguration database_configuration;
-    }
-
-    public class when_creating_a_new_session_to_a_db40_database : behaves_like_a_session_factory
-    {
-        it should_open_a_new_connection_to_the_database = () => result.should_be_equal_to(session);
-
-        context c =
-            () =>
-                {
-                    var the_path_to_the_database_file = an<IFile>();
-                    session = an<IObjectContainer>();
-
-                    mocking_extensions.it_will_return(mocking_extensions.is_told_to(database_configuration, x => x.path_to_the_database()), the_path_to_the_database_file);
-                    mocking_extensions.it_will_return(mocking_extensions.is_told_to(connection_factory, x => x.open_connection_to(the_path_to_the_database_file)), session);
-                };
-
-        because b = () => { result = sut.create(); };
-
-        static IObjectContainer result;
-        static IObjectContainer session;
-    }
-
-    public class when_creating_a_session_for_a_file_that_has_already_been_opened : behaves_like_a_session_factory
-    {
-        it should_only_open_the_connection_once =
-            () => mocking_extensions.was_told_to(connection_factory, x => x.open_connection_to(the_path_to_the_database_file)).only_once();
-
-        it should_return_the_original_connection = () => result.should_be_equal_to(original_connection);
-
-        context c = () =>
-                        {
-                            the_path_to_the_database_file = an<IFile>();
-                            original_connection = an<IObjectContainer>();
-
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(when_the(database_configuration), x => x.path_to_the_database()), the_path_to_the_database_file);
-
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(when_the(connection_factory), x => x.open_connection_to(the_path_to_the_database_file)), original_connection);
-                        };
-
-        because b = () =>
-                        {
-                            result = sut.create();
-                            result = sut.create();
-                        };
-
-        static IFile the_path_to_the_database_file;
-        static IObjectContainer result;
-        static IObjectContainer original_connection;
-    }
-
-    public class when_opening_a_new_file_after_one_has_already_been_opened : behaves_like_a_session_factory
-    {
-        it should_close_the_previous_file = () => mocking_extensions.was_told_to(original_connection, x => x.Close()).only_once();
-
-        context c = () =>
-                        {
-                            var the_path_to_the_database_file = an<IFile>();
-                            var a_new_path = an<IFile>();
-                            original_connection = an<IObjectContainer>();
-
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(database_configuration, x => x.path_to_the_database()), the_path_to_the_database_file)
-                                .Repeat.Once();
-
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(database_configuration, x => x.path_to_the_database()), a_new_path)
-                                .Repeat.Once();
-
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(connection_factory, x => x.open_connection_to(the_path_to_the_database_file)), original_connection);
-                        };
-
-        because b = () =>
-                        {
-                            sut.create();
-                            sut.create();
-                        };
-
-        static IObjectContainer original_connection;
-    }
-}
\ No newline at end of file
trunk/product/MyMoney/DataAccess/db40/SessionFactory.cs
@@ -0,0 +1,26 @@
+using Db4objects.Db4o;
+using MyMoney.Utility.Core;
+
+namespace MyMoney.DataAccess.db40
+{
+    public interface ISessionFactory : IFactory<IObjectContainer>
+    {
+    }
+
+    public class SessionFactory : ISessionFactory
+    {
+        readonly IDatabaseConfiguration database_configuration;
+        readonly IConnectionFactory connection_factory;
+
+        public SessionFactory(IDatabaseConfiguration database_configuration, IConnectionFactory connection_factory)
+        {
+            this.database_configuration = database_configuration;
+            this.connection_factory = connection_factory;
+        }
+
+        public IObjectContainer create()
+        {
+            return connection_factory.open_connection_to(database_configuration.path_to_the_database());
+        }
+    }
+}
\ No newline at end of file
trunk/product/MyMoney/DataAccess/db40/SessionFactorySpecs.cs
@@ -0,0 +1,47 @@
+using Db4objects.Db4o;
+using jpboodhoo.bdd.contexts;
+using MyMoney.Presentation.Model.Projects;
+using MyMoney.Testing.MetaData;
+using MyMoney.Testing.spechelpers.contexts;
+using MyMoney.Testing.spechelpers.core;
+
+namespace MyMoney.DataAccess.db40
+{
+    [Concern(typeof (SessionFactory))]
+    public abstract class behaves_like_a_session_factory : concerns_for<ISessionFactory, SessionFactory>
+    {
+        public override ISessionFactory create_sut()
+        {
+            return new SessionFactory(database_configuration, connection_factory);
+        }
+
+        context c = () =>
+                        {
+                            connection_factory = the_dependency<IConnectionFactory>();
+                            database_configuration = the_dependency<IDatabaseConfiguration>();
+                        };
+
+        protected static IConnectionFactory connection_factory;
+        protected static IDatabaseConfiguration database_configuration;
+    }
+
+    public class when_creating_a_new_session_to_a_db40_database : behaves_like_a_session_factory
+    {
+        it should_open_a_new_connection_to_the_database = () => result.should_be_equal_to(session);
+
+        context c =
+            () =>
+                {
+                    var the_path_to_the_database_file = an<IFile>();
+                    session = an<IObjectContainer>();
+
+                    database_configuration.is_told_to(x => x.path_to_the_database()).it_will_return( the_path_to_the_database_file);
+                    connection_factory.is_told_to(x => x.open_connection_to(the_path_to_the_database_file)). it_will_return(session);
+                };
+
+        because b = () => { result = sut.create(); };
+
+        static IObjectContainer result;
+        static IObjectContainer session;
+    }
+}
\ No newline at end of file
trunk/product/MyMoney/DataAccess/repositories/bill_repository_specs.cs
@@ -1,16 +1,18 @@
+using System;
 using System.Collections.Generic;
 using jpboodhoo.bdd.contexts;
 using MyMoney.Domain.accounting.billing;
+using MyMoney.Domain.Core;
 using MyMoney.Testing.spechelpers.contexts;
-using assertion_extensions=MyMoney.Testing.spechelpers.core.assertion_extensions;
+using MyMoney.Testing.spechelpers.core;
 
 namespace MyMoney.DataAccess.repositories
 {
     public class when_loading_all_the_bills_from_the_repository : behaves_like_a_repository
     {
-        it should_return_all_the_bills_in_the_database = () => assertion_extensions.should_contain(results, first_bill);
+        public it should_return_all_the_bills_in_the_database = () => results.should_contain(first_bill);
 
-        context c = () => { first_bill = an<IBill>(); };
+        context c = () => { first_bill = new Bill(new Company("mokhan.ca"), new Money(1, 00), DateTime.Now); };
 
         because b = () =>
                         {
trunk/product/MyMoney/Domain/accounting/billing/Bill.cs
@@ -14,9 +14,10 @@ namespace MyMoney.Domain.accounting.billing
         IDate due_date { get; }
     }
 
-    internal class bill : Entity<IBill>, IBill
+    [Serializable]
+    internal class Bill : Entity<IBill>, IBill
     {
-        public bill(ICompany company_to_pay, IMoney the_amount_owed, DateTime due_date)
+        public Bill(ICompany company_to_pay, IMoney the_amount_owed, DateTime due_date)
         {
             this.company_to_pay = company_to_pay;
             this.the_amount_owed = the_amount_owed;
@@ -44,7 +45,7 @@ namespace MyMoney.Domain.accounting.billing
             return payments.return_value_from_visiting_all_items_with(new total_payments_calculator());
         }
 
-        public bool Equals(bill obj)
+        public bool Equals(Bill obj)
         {
             if (ReferenceEquals(null, obj)) return false;
             if (ReferenceEquals(this, obj)) return true;
@@ -56,8 +57,8 @@ namespace MyMoney.Domain.accounting.billing
         {
             if (ReferenceEquals(null, obj)) return false;
             if (ReferenceEquals(this, obj)) return true;
-            if (obj.GetType() != typeof (bill)) return false;
-            return Equals((bill) obj);
+            if (obj.GetType() != typeof (Bill)) return false;
+            return Equals((Bill) obj);
         }
 
         public override int GetHashCode()
trunk/product/MyMoney/Domain/accounting/billing/bill_specs.cs → trunk/product/MyMoney/Domain/accounting/billing/BillSpecs.cs
@@ -7,19 +7,19 @@ using MyMoney.Testing.spechelpers.core;
 
 namespace MyMoney.Domain.accounting.billing
 {
-    [Concern(typeof (bill))]
+    [Concern(typeof (Bill))]
     public class when_checking_to_see_if_a_new_bill_has_been_paid_for : concerns_for<IBill>
     {
         it should_return_false = () => result.should_be_equal_to(false);
 
         public override IBill create_sut()
         {
-            return new bill(enmax, amount_owed, DateTime.Now);
+            return new Bill(enmax, amount_owed, DateTime.Now);
         }
 
         context c = () =>
                         {
-                            amount_owed = new money(100);
+                            amount_owed = new Money(100);
                             enmax = an<ICompany>();
                         };
 
@@ -30,7 +30,7 @@ namespace MyMoney.Domain.accounting.billing
         static ICompany enmax;
     }
 
-    [Concern(typeof (bill))]
+    [Concern(typeof (Bill))]
     public class when_checking_if_a_paid_bill_has_been_paid_for : concerns_for<IBill>
     {
         it should_return_true = () => result.should_be_equal_to(true);
@@ -38,7 +38,7 @@ namespace MyMoney.Domain.accounting.billing
 
         context c = () =>
                         {
-                            one_hundred_twenty_three_dollars_fourty_five_cents = new money(123, 45);
+                            one_hundred_twenty_three_dollars_fourty_five_cents = new Money(123, 45);
                             direct_energy = an<ICompany>();
                         };
 
@@ -50,7 +50,7 @@ namespace MyMoney.Domain.accounting.billing
 
         public override IBill create_sut()
         {
-            return new bill(direct_energy, one_hundred_twenty_three_dollars_fourty_five_cents, DateTime.Now);
+            return new Bill(direct_energy, one_hundred_twenty_three_dollars_fourty_five_cents, DateTime.Now);
         }
 
         static IMoney one_hundred_twenty_three_dollars_fourty_five_cents;
@@ -58,7 +58,7 @@ namespace MyMoney.Domain.accounting.billing
         static ICompany direct_energy;
     }
 
-    [Concern(typeof (bill))]
+    [Concern(typeof (Bill))]
     public class when_checking_if_two_bills_are_the_same_and_they_are : concerns_for<IBill>
     {
         it should_return_true = () => result.should_be_equal_to(true);
@@ -70,11 +70,11 @@ namespace MyMoney.Domain.accounting.billing
                             due_date = new DateTime(2008, 01, 01);
                         };
 
-        because b = () => { result = sut.Equals(new bill(company, new money(0), due_date)); };
+        because b = () => { result = sut.Equals(new Bill(company, new Money(0), due_date)); };
 
         public override IBill create_sut()
         {
-            return new bill(company, new money(0), due_date);
+            return new Bill(company, new Money(0), due_date);
         }
 
         static ICompany company;
trunk/product/MyMoney/Domain/accounting/billing/Company.cs
@@ -23,7 +23,7 @@ namespace MyMoney.Domain.accounting.billing
 
         public void issue_bill_to(IAccountHolder customer, DateTime that_is_due_on, IMoney for_amount)
         {
-            customer.recieve(new bill(this, for_amount, that_is_due_on));
+            customer.recieve(new Bill(this, for_amount, that_is_due_on));
         }
 
         public void pay(IAccountHolder person, IMoney amount, IDate date_of_payment)
trunk/product/MyMoney/Domain/accounting/billing/company_specs.cs
@@ -11,24 +11,24 @@ namespace MyMoney.Domain.accounting.billing
     [Concern(typeof (Company))]
     public abstract class behaves_like_a_company : concerns_for<ICompany>
     {
-        protected string company_name;
-
         public override ICompany create_sut()
         {
             company_name = "enmax";
             return new Company(company_name);
         }
+
+        protected string company_name;
     }
 
     public class when_a_company_issues_a_bill_to_a_customer : behaves_like_a_company
     {
         it should_issue_the_bill_to_the_customer_for_the_previous_billing_month =
-            () => customer.was_told_to(x => x.recieve(new bill(sut, for_amount, that_is_due_on)));
+            () => customer.was_told_to(x => x.recieve(new Bill(sut, for_amount, that_is_due_on)));
 
         context c = () =>
                         {
                             customer = an<IAccountHolder>();
-                            for_amount = new money(53, 24);
+                            for_amount = new Money(53, 24);
                             that_is_due_on = new DateTime(2008, 02, 12);
                         };
 
@@ -46,14 +46,14 @@ namespace MyMoney.Domain.accounting.billing
 
         context c = () =>
                         {
-                            two_thousand_dollars = new money(2000);
+                            two_thousand_dollars = new Money(2000);
                             person = an<IAccountHolder>();
                             date_of_payment = an<IDate>();
                         };
 
         because b = () => sut.pay(person, two_thousand_dollars, date_of_payment);
 
-        static money two_thousand_dollars;
+        static Money two_thousand_dollars;
         static IAccountHolder person;
         static IDate date_of_payment;
     }
trunk/product/MyMoney/Domain/accounting/billing/Payment.cs
@@ -1,3 +1,4 @@
+using System;
 using MyMoney.Domain.Core;
 
 namespace MyMoney.Domain.accounting.billing
@@ -7,6 +8,7 @@ namespace MyMoney.Domain.accounting.billing
         IMoney amount_paid { get; }
     }
 
+    [Serializable]
     internal class Payment : Entity<IPayment>, IPayment
     {
         public Payment(IMoney amount_paid)
trunk/product/MyMoney/Domain/accounting/billing/total_payments_calculator.cs
@@ -19,7 +19,7 @@ namespace MyMoney.Domain.accounting.billing
 
         public void reset()
         {
-            value = new money(0);
+            value = new Money(0);
         }
     }
 }
\ No newline at end of file
trunk/product/MyMoney/Domain/accounting/financial_growth/income.cs
@@ -1,3 +1,4 @@
+using System;
 using MyMoney.Domain.accounting.billing;
 using MyMoney.Domain.Core;
 
@@ -10,6 +11,7 @@ namespace MyMoney.Domain.accounting.financial_growth
         ICompany company { get; }
     }
 
+    [Serializable]
     internal class Income : Entity<IIncome>, IIncome
     {
         public Income(IDate date_of_issue, IMoney amount_tendered, ICompany company)
trunk/product/MyMoney/Domain/accounting/financial_growth/income_extensions.cs
@@ -7,7 +7,7 @@ namespace MyMoney.Domain.accounting.financial_growth
     {
         public static IMoney in_the(this IEnumerable<IIncome> income_collected, IYear year)
         {
-            IMoney income_for_year = new money(0);
+            IMoney income_for_year = new Money(0);
             foreach (var income in income_collected) {
                 if (income.date_of_issue.is_in(year)) {
                     income_for_year = income_for_year.add(income.amount_tendered);
trunk/product/MyMoney/Domain/accounting/account_holder.cs → trunk/product/MyMoney/Domain/accounting/AccountHolder.cs
@@ -1,3 +1,4 @@
+using System;
 using System.Collections.Generic;
 using MyMoney.Domain.accounting.billing;
 using MyMoney.Domain.accounting.financial_growth;
@@ -14,9 +15,10 @@ namespace MyMoney.Domain.accounting
         IMoney calculate_income_for(IYear year);
     }
 
-    internal class account_holder : Entity<IAccountHolder>, IAccountHolder
+    [Serializable]
+    internal class AccountHolder : Entity<IAccountHolder>, IAccountHolder
     {
-        public account_holder()
+        public AccountHolder()
         {
             all_bills = new List<IBill>();
             income_collected = new List<IIncome>();
trunk/product/MyMoney/Domain/accounting/account_holder_specs.cs → trunk/product/MyMoney/Domain/accounting/AccountHolderSpecs.cs
@@ -7,16 +7,15 @@ using MyMoney.Domain.Core;
 using MyMoney.Testing.MetaData;
 using MyMoney.Testing.spechelpers.contexts;
 using MyMoney.Testing.spechelpers.core;
-using mocking_extensions=MyMoney.Testing.spechelpers.core.mocking_extensions;
 
 namespace MyMoney.Domain.accounting
 {
-    [Concern(typeof (account_holder))]
+    [Concern(typeof (AccountHolder))]
     public abstract class behaves_like_an_account_holder : concerns_for<IAccountHolder>
     {
         public override IAccountHolder create_sut()
         {
-            return new account_holder();
+            return new AccountHolder();
         }
     }
 
@@ -24,8 +23,8 @@ namespace MyMoney.Domain.accounting
     {
         it should_return_all_the_unpaid_bills = () =>
                                                     {
-                                                        assertion_extensions.should_contain(result, first_unpaid_bill);
-                                                        assertion_extensions.should_contain(result, second_unpaid_bill);
+                                                        result.should_contain(first_unpaid_bill);
+                                                        result.should_contain(second_unpaid_bill);
                                                     };
 
         context c = () =>
@@ -34,9 +33,9 @@ namespace MyMoney.Domain.accounting
                             second_unpaid_bill = an<IBill>();
                             paid_bill = an<IBill>();
 
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(first_unpaid_bill, x => x.is_paid_for()), false);
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(second_unpaid_bill, x => x.is_paid_for()), false);
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(paid_bill, x => x.is_paid_for()), true);
+                            first_unpaid_bill.is_told_to(x => x.is_paid_for()).it_will_return(false);
+                            second_unpaid_bill.is_told_to(x => x.is_paid_for()).it_will_return(false);
+                            paid_bill.is_told_to(x => x.is_paid_for()).it_will_return(true);
                         };
 
         because b = () =>
@@ -53,7 +52,7 @@ namespace MyMoney.Domain.accounting
         static IBill paid_bill;
     }
 
-    [Concern(typeof (account_holder))]
+    [Concern(typeof (AccountHolder))]
     public class when_an_account_holder_is_calculating_their_income_for_a_year : behaves_like_an_account_holder
     {
         context c = () =>
@@ -62,14 +61,14 @@ namespace MyMoney.Domain.accounting
                             income_for_february_2007 = an<IIncome>();
                             income_for_february_2008 = an<IIncome>();
 
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(income_for_january_2007, x => x.date_of_issue), new DateTime(2007, 01, 01).as_a_date());
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(income_for_january_2007, x => x.amount_tendered), new money(1000, 00));
+                            income_for_january_2007.is_told_to(x => x.date_of_issue).it_will_return( new DateTime(2007, 01, 01).as_a_date());
+                            income_for_january_2007.is_told_to(x => x.amount_tendered). it_will_return(new Money(1000, 00));
 
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(income_for_february_2007, x => x.date_of_issue), new DateTime(2007, 02, 01).as_a_date());
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(income_for_february_2007, x => x.amount_tendered), new money(1000, 00));
+                            income_for_february_2007.is_told_to(x => x.date_of_issue).it_will_return (new DateTime(2007, 02, 01).as_a_date());
+                            income_for_february_2007.is_told_to(x => x.amount_tendered).it_will_return(new Money(1000, 00));
 
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(income_for_february_2008, x => x.date_of_issue), new DateTime(2008, 02, 01).as_a_date());
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(income_for_february_2008, x => x.amount_tendered), new money(1000, 00));
+                            income_for_february_2008.is_told_to(x => x.date_of_issue).it_will_return( new DateTime(2008, 02, 01).as_a_date());
+                            income_for_february_2008.is_told_to(x => x.amount_tendered).it_will_return(new Money(1000, 00));
                         };
 
         because b = () =>
trunk/product/MyMoney/Domain/accounting/general_ledger.cs
@@ -1,3 +1,4 @@
+using System;
 using System.Collections.Generic;
 using MyMoney.Domain.accounting.billing;
 using MyMoney.Domain.Core;
@@ -10,6 +11,7 @@ namespace MyMoney.Domain.accounting
         IEnumerable<ILedgerEntry> get_all_the_entries_for(IMonth month);
     }
 
+    [Serializable]
     public class general_ledger : IGeneralLedger
     {
         private readonly List<ILedgerEntry> entries;
trunk/product/MyMoney/Domain/accounting/GeneralLedgerSpecs.cs
@@ -5,7 +5,7 @@ using MyMoney.Domain.accounting.billing;
 using MyMoney.Domain.Core;
 using MyMoney.Testing.MetaData;
 using MyMoney.Testing.spechelpers.contexts;
-using assertion_extensions=MyMoney.Testing.spechelpers.core.assertion_extensions;
+using MyMoney.Testing.spechelpers.core;
 using mocking_extensions=MyMoney.Testing.spechelpers.core.mocking_extensions;
 
 namespace MyMoney.Domain.accounting
@@ -34,12 +34,12 @@ namespace MyMoney.Domain.accounting
     {
         it should_return_all_the_entries_posted_for_that_month = () =>
                                                                      {
-                                                                         assertion_extensions.should_contain(result, february_first);
-                                                                         assertion_extensions.should_contain(result, february_twenty_first);
+                                                                         result.should_contain(february_first);
+                                                                         result.should_contain(february_twenty_first);
                                                                      };
 
         it should_not_return_any_entries_that_were_not_posted_for_that_month =
-            () => assertion_extensions.should_not_contain(result, april_first);
+            () => assertions.should_not_contain(result, april_first);
 
         context c = () =>
                         {
@@ -47,9 +47,9 @@ namespace MyMoney.Domain.accounting
                             february_twenty_first = an<ILedgerEntry>();
                             april_first = an<ILedgerEntry>();
 
-                            mocking_extensions.is_told_to(february_first, x => x.entry_date()).Return(new DateTime(2008, 02, 01));
-                            mocking_extensions.is_told_to(february_twenty_first, x => x.entry_date()).Return(new DateTime(2008, 02, 21));
-                            mocking_extensions.is_told_to(april_first, x => x.entry_date()).Return(new DateTime(2008, 04, 01));
+                            february_first.is_told_to(x => x.entry_date()).it_will_return(new DateTime(2008, 02, 01));
+                            february_twenty_first.is_told_to(x => x.entry_date()).it_will_return(new DateTime(2008, 02, 21));
+                            april_first.is_told_to(x => x.entry_date()).it_will_return(new DateTime(2008, 04, 01));
                         };
 
         because b = () => { result = sut.get_all_the_entries_for(Months.February); };
trunk/product/MyMoney/Domain/Core/Clock.cs
@@ -2,7 +2,7 @@ using System;
 
 namespace MyMoney.Domain.Core
 {
-    public class Clock
+    public static class Clock
     {
         private static Func<DateTime> time_provider;
 
@@ -11,7 +11,7 @@ namespace MyMoney.Domain.Core
             reset();
         }
 
-        public static date today()
+        public static Date today()
         {
             return time_provider();
         }
trunk/product/MyMoney/Domain/Core/date.cs
@@ -10,11 +10,12 @@ namespace MyMoney.Domain.Core
         DateTime to_date_time();
     }
 
-    public class date : IDate, IEquatable<date>
+    [Serializable]
+    public class Date : IDate, IEquatable<Date>
     {
         private readonly long ticks;
 
-        public date(int year, int month, int day)
+        public Date(int year, int month, int day)
         {
             ticks = new DateTime(year, month, day).Ticks;
         }
@@ -29,19 +30,19 @@ namespace MyMoney.Domain.Core
             return new DateTime(ticks);
         }
 
-        public static implicit operator date(DateTime date)
+        public static implicit operator Date(DateTime date)
         {
-            return new date(date.Year, date.Month, date.Day);
+            return new Date(date.Year, date.Month, date.Day);
         }
 
-        public static implicit operator DateTime(date date)
+        public static implicit operator DateTime(Date date)
         {
             return date.to_date_time();
         }
 
         public int CompareTo(IDate other)
         {
-            var the_other_date = other.downcast_to<date>();
+            var the_other_date = other.downcast_to<Date>();
             if (ticks.Equals(the_other_date.ticks))
             {
                 return 0;
@@ -49,7 +50,7 @@ namespace MyMoney.Domain.Core
             return ticks > the_other_date.ticks ? 1 : -1;
         }
 
-        public bool Equals(date obj)
+        public bool Equals(Date obj)
         {
             if (ReferenceEquals(null, obj)) return false;
             if (ReferenceEquals(this, obj)) return true;
@@ -65,8 +66,8 @@ namespace MyMoney.Domain.Core
         {
             if (ReferenceEquals(null, obj)) return false;
             if (ReferenceEquals(this, obj)) return true;
-            if (obj.GetType() != typeof (date)) return false;
-            return Equals((date) obj);
+            if (obj.GetType() != typeof (Date)) return false;
+            return Equals((Date) obj);
         }
 
         public override int GetHashCode()
trunk/product/MyMoney/Domain/Core/date_extensions.cs
@@ -6,7 +6,7 @@ namespace MyMoney.Domain.Core
     {
         public static IDate as_a_date(this DateTime date)
         {
-            return (date) date;
+            return (Date) date;
         }
 
         public static IYear as_a_year(this int year)
trunk/product/MyMoney/Domain/Core/date_specs.cs
@@ -5,32 +5,32 @@ using MyMoney.Testing.spechelpers.core;
 
 namespace MyMoney.Domain.Core
 {
-    [Concern(typeof (date))]
+    [Concern(typeof (Date))]
     public class when_two_dates_that_represent_the_same_day_are_asked_if_they_are_equal : concerns_for<IDate>
     {
         it should_return_true = () => result.should_be_equal_to(true);
 
         public override IDate create_sut()
         {
-            return new date(2008, 09, 25);
+            return new Date(2008, 09, 25);
         }
 
-        because b = () => { result = sut.Equals(new date(2008, 09, 25)); };
+        because b = () => { result = sut.Equals(new Date(2008, 09, 25)); };
 
         static bool result;
     }
 
-    [Concern(typeof (date))]
+    [Concern(typeof (Date))]
     public class when_an_older_date_is_compared_to_a_younger_date : concerns_for<IDate>
     {
-        it should_return_a_positive_number = () => assertion_extensions.should_be_greater_than(result, 0);
+        it should_return_a_positive_number = () => result.should_be_greater_than(0);
 
         public override IDate create_sut()
         {
-            return new date(2008, 09, 25);
+            return new Date(2008, 09, 25);
         }
 
-        because b = () => { result = sut.CompareTo(new date(2007, 01, 01)); };
+        because b = () => { result = sut.CompareTo(new Date(2007, 01, 01)); };
 
         static int result;
     }
trunk/product/MyMoney/Domain/Core/day.cs
@@ -3,20 +3,22 @@ using System;
 namespace MyMoney.Domain.Core
 {
     public interface IDay
-    {}
+    {
+    }
 
-    internal class day : IDay
+    [Serializable]
+    internal class Day : IDay
     {
-        private readonly DateTime the_underlying_date;
-        private readonly int the_day;
+        readonly DateTime the_underlying_date;
+        readonly int the_day;
 
-        public day(DateTime the_underlying_date)
+        public Day(DateTime the_underlying_date)
         {
             this.the_underlying_date = the_underlying_date;
             the_day = the_underlying_date.Day;
         }
 
-        public bool Equals(day obj)
+        public bool Equals(Day obj)
         {
             if (ReferenceEquals(null, obj)) return false;
             if (ReferenceEquals(this, obj)) return true;
@@ -27,8 +29,8 @@ namespace MyMoney.Domain.Core
         {
             if (ReferenceEquals(null, obj)) return false;
             if (ReferenceEquals(this, obj)) return true;
-            if (obj.GetType() != typeof (day)) return false;
-            return Equals((day) obj);
+            if (obj.GetType() != typeof (Day)) return false;
+            return Equals((Day) obj);
         }
 
         public override int GetHashCode()
trunk/product/MyMoney/Domain/Core/Money.cs
@@ -10,12 +10,13 @@ namespace MyMoney.Domain.Core
         IMoney add(IMoney other);
     }
 
-    internal class money : IMoney
+    [Serializable]
+    internal class Money : IMoney
     {
-        public money(long dollars) : this(dollars, 0)
+        public Money(long dollars) : this(dollars, 0)
         {}
 
-        public money(long dollars, int cents)
+        public Money(long dollars, int cents)
         {
             this.dollars = dollars;
             this.cents = cents;
@@ -34,9 +35,9 @@ namespace MyMoney.Domain.Core
             if (other.cents + cents > 100) {
                 ++new_dollars;
                 var pennies = cents + other.cents - 100;
-                return new money(new_dollars, pennies);
+                return new Money(new_dollars, pennies);
             }
-            return new money(new_dollars, cents + other.cents);
+            return new Money(new_dollars, cents + other.cents);
         }
 
         public bool Equals(IMoney other)
trunk/product/MyMoney/Domain/Core/money_extensions.cs
@@ -13,7 +13,7 @@ namespace MyMoney.Domain.Core
             var roundedAmount = mantissa >= .5m ? .01*(wholePart + 1) : .01*wholePart;
             var cents = (roundedAmount*100).to_int();
 
-            return new money(cents/100, cents%100);
+            return new Money(cents/100, cents%100);
         }
 
         public static IMoney as_money(this int amount)
@@ -25,7 +25,7 @@ namespace MyMoney.Domain.Core
             var roundedAmount = mantissa >= .5m ? .01*(wholePart + 1) : .01*wholePart;
             var cents = (roundedAmount*100).to_int();
 
-            return new money(cents/100, cents%100);
+            return new Money(cents/100, cents%100);
         }
     }
 }
\ No newline at end of file
trunk/product/MyMoney/Domain/Core/money_extensions_specs.cs
@@ -6,7 +6,7 @@ namespace MyMoney.Domain.Core
 {
     public class when_converting_a_valid_amount_to_a_money : concerns_for
     {
-        it should_return_the_correct_money = () => result.should_be_equal_to(new money(1, 99));
+        it should_return_the_correct_money = () => result.should_be_equal_to(new Money(1, 99));
 
         because b = () => { result = 1.99.as_money(); };
 
trunk/product/MyMoney/Domain/Core/money_specs.cs → trunk/product/MyMoney/Domain/Core/MoneySpecs.cs
@@ -5,47 +5,47 @@ using MyMoney.Testing.spechelpers.core;
 
 namespace MyMoney.Domain.Core
 {
-    [Concern(typeof (money))]
+    [Concern(typeof (Money))]
     public class when_adding_two_monies_together : concerns_for<IMoney>
     {
-        it should_return_the_correct_money = () => result.should_be_equal_to(new money(2, 98));
+        it should_return_the_correct_money = () => result.should_be_equal_to(new Money(2, 98));
 
 
-        because b = () => { result = sut.add(new money(1, 99)); };
+        because b = () => { result = sut.add(new Money(1, 99)); };
 
         public override IMoney create_sut()
         {
-            return new money(0, 99);
+            return new Money(0, 99);
         }
 
         static IMoney result;
     }
 
-    [Concern(typeof (money))]
+    [Concern(typeof (Money))]
     public class when_two_monies_of_the_same_value_are_compared_to_one_another : concerns_for<IMoney>
     {
         it they_should_be_equal = () => result.should_be_equal_to(true);
 
 
-        because b = () => { result = sut.Equals(new money(1, 99)); };
+        because b = () => { result = sut.Equals(new Money(1, 99)); };
 
         public override IMoney create_sut()
         {
-            return new money(1, 99);
+            return new Money(1, 99);
         }
 
         static bool result;
     }
 
-    [Concern(typeof (money))]
+    [Concern(typeof (Money))]
     public class when_creating_a_money_with_pennies_greater_than_a_dollar : concerns_for<IMoney>
     {
         it should_create_a_money_representing_the_correct_amount_of_dollars_and_pennies =
-            () => sut.should_be_equal_to(new money(3, 00));
+            () => sut.should_be_equal_to(new Money(3, 00));
 
         public override IMoney create_sut()
         {
-            return new money(1, 200);
+            return new Money(1, 200);
         }
     }
 }
\ No newline at end of file
trunk/product/MyMoney/Domain/Core/Month.cs
@@ -6,4 +6,48 @@ namespace MyMoney.Domain.Core
     {
         bool represents(DateTime date);
     }
+
+    [Serializable]
+    internal class Month : IMonth
+    {
+        readonly int the_underlying_month;
+        readonly string name_of_the_month;
+
+        internal Month(int month, string name_of_the_month)
+        {
+            the_underlying_month = month;
+            this.name_of_the_month = name_of_the_month;
+            Months.add(this);
+        }
+
+        public bool represents(DateTime date)
+        {
+            return date.Month.Equals(the_underlying_month);
+        }
+
+        public bool Equals(Month obj)
+        {
+            if (ReferenceEquals(null, obj)) return false;
+            if (ReferenceEquals(this, obj)) return true;
+            return obj.the_underlying_month == the_underlying_month;
+        }
+
+        public override bool Equals(object obj)
+        {
+            if (ReferenceEquals(null, obj)) return false;
+            if (ReferenceEquals(this, obj)) return true;
+            if (obj.GetType() != typeof (Month)) return false;
+            return Equals((Month) obj);
+        }
+
+        public override int GetHashCode()
+        {
+            return the_underlying_month;
+        }
+
+        public override string ToString()
+        {
+            return name_of_the_month;
+        }
+    }
 }
\ No newline at end of file
trunk/product/MyMoney/Domain/Core/Months.cs
@@ -4,22 +4,22 @@ using System.Linq;
 
 namespace MyMoney.Domain.Core
 {
-    public class Months
+    public static class Months
     {
-        private static readonly IList<IMonth> all_months = new List<IMonth>();
-
-        public static readonly IMonth January = new month(01, "January");
-        public static readonly IMonth February = new month(02, "February");
-        public static readonly IMonth March = new month(03, "March");
-        public static readonly IMonth April = new month(04, "April");
-        public static readonly IMonth May = new month(05, "May");
-        public static readonly IMonth June = new month(06, "June");
-        public static readonly IMonth July = new month(07, "July");
-        public static readonly IMonth August = new month(08, "August");
-        public static readonly IMonth September = new month(09, "September");
-        public static readonly IMonth October = new month(10, "October");
-        public static readonly IMonth November = new month(11, "November");
-        public static readonly IMonth December = new month(12, "December");
+        static readonly IList<IMonth> all_months = new List<IMonth>();
+
+        public static readonly IMonth January = new Month(01, "January");
+        public static readonly IMonth February = new Month(02, "February");
+        public static readonly IMonth March = new Month(03, "March");
+        public static readonly IMonth April = new Month(04, "April");
+        public static readonly IMonth May = new Month(05, "May");
+        public static readonly IMonth June = new Month(06, "June");
+        public static readonly IMonth July = new Month(07, "July");
+        public static readonly IMonth August = new Month(08, "August");
+        public static readonly IMonth September = new Month(09, "September");
+        public static readonly IMonth October = new Month(10, "October");
+        public static readonly IMonth November = new Month(11, "November");
+        public static readonly IMonth December = new Month(12, "December");
 
         public static IMonth that_represents(DateTime the_underlying_date)
         {
@@ -30,48 +30,5 @@ namespace MyMoney.Domain.Core
         {
             all_months.Add(month);
         }
-
-        private class month : IMonth
-        {
-            private readonly int the_underlying_month;
-            private readonly string name_of_the_month;
-
-            internal month(int month, string name_of_the_month)
-            {
-                the_underlying_month = month;
-                this.name_of_the_month = name_of_the_month;
-                add(this);
-            }
-
-            public bool represents(DateTime date)
-            {
-                return date.Month.Equals(the_underlying_month);
-            }
-
-            public bool Equals(month obj)
-            {
-                if (ReferenceEquals(null, obj)) return false;
-                if (ReferenceEquals(this, obj)) return true;
-                return obj.the_underlying_month == the_underlying_month;
-            }
-
-            public override bool Equals(object obj)
-            {
-                if (ReferenceEquals(null, obj)) return false;
-                if (ReferenceEquals(this, obj)) return true;
-                if (obj.GetType() != typeof (month)) return false;
-                return Equals((month) obj);
-            }
-
-            public override int GetHashCode()
-            {
-                return the_underlying_month;
-            }
-
-            public override string ToString()
-            {
-                return name_of_the_month;
-            }
-        }
     }
 }
\ No newline at end of file
trunk/product/MyMoney/Infrastructure/Container/Windsor/windsor_dependency_registry_specs.cs
@@ -4,7 +4,6 @@ using jpboodhoo.bdd.contexts;
 using MyMoney.Testing.MetaData;
 using MyMoney.Testing.spechelpers.contexts;
 using MyMoney.Testing.spechelpers.core;
-using mocking_extensions=MyMoney.Testing.spechelpers.core.mocking_extensions;
 
 namespace MyMoney.Infrastructure.Container.Windsor
 {
@@ -14,7 +13,7 @@ namespace MyMoney.Infrastructure.Container.Windsor
         it should_return_the_same_instance_each_time_its_resolved =
             () => result.should_be_the_same_instance_as(sut.get_a<IBird>());
 
-        it should_not_return_null = () => assertion_extensions.should_not_be_null(result);
+        it should_not_return_null = () => result.should_not_be_null();
 
         public override IDependencyRegistry create_sut()
         {
@@ -29,7 +28,7 @@ namespace MyMoney.Infrastructure.Container.Windsor
     [Concern(typeof (windsor_dependency_registry))]
     public class when_creating_the_windsor_resolver_ : concerns_for<IDependencyRegistry>
     {
-        it should_leverage_the_factory_to_create_the_underlying_container = () => mocking_extensions.was_told_to(factory, f => f.create());
+        it should_leverage_the_factory_to_create_the_underlying_container = () => factory.was_told_to(f => f.create());
 
         public override IDependencyRegistry create_sut()
         {
@@ -40,7 +39,7 @@ namespace MyMoney.Infrastructure.Container.Windsor
                         {
                             var container = an<IWindsorContainer>();
                             factory = an<IWindsorContainerFactory>();
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(factory, f => f.create()), container);
+                            factory.is_told_to(f => f.create()).it_will_return(container);
                         };
 
 
trunk/product/MyMoney/Infrastructure/registries/default_registry_specs.cs
@@ -4,8 +4,7 @@ using MyMoney.Domain.Core;
 using MyMoney.Infrastructure.Container;
 using MyMoney.Testing.MetaData;
 using MyMoney.Testing.spechelpers.contexts;
-using assertion_extensions=MyMoney.Testing.spechelpers.core.assertion_extensions;
-using mocking_extensions=MyMoney.Testing.spechelpers.core.mocking_extensions;
+using MyMoney.Testing.spechelpers.core;
 
 namespace MyMoney.Infrastructure.registries
 {
@@ -14,16 +13,15 @@ namespace MyMoney.Infrastructure.registries
         concerns_for<IRegistry<int>, default_registry<int>>
     {
         it should_leverage_the_resolver_to_retrieve_all_the_implementations =
-            () => mocking_extensions.was_told_to(registry, r => r.all_the<int>());
+            () => registry.was_told_to(r => r.all_the<int>());
 
-        it should_return_the_items_resolved_by_the_registry = () => assertion_extensions.should_contain(result, 24);
+        it should_return_the_items_resolved_by_the_registry = () => result.should_contain(24);
 
         context c = () =>
                         {
                             var items_to_return = new List<int> {24};
-
                             registry = an<IDependencyRegistry>();
-                            mocking_extensions.it_will_return(mocking_extensions.is_told_to(registry, r => r.all_the<int>()), items_to_return);
+                            registry.is_told_to(r => r.all_the<int>()).it_will_return(items_to_return);
                         };
 
         public override IRegistry<int> create_sut()
trunk/product/MyMoney/Infrastructure/Threading/background_thread_factory_specs.cs
@@ -2,14 +2,14 @@ using jpboodhoo.bdd.contexts;
 using MyMoney.Infrastructure.Container;
 using MyMoney.Testing.MetaData;
 using MyMoney.Testing.spechelpers.contexts;
+using MyMoney.Testing.spechelpers.core;
 using MyMoney.Utility.Core;
-using assertion_extensions=MyMoney.Testing.spechelpers.core.assertion_extensions;
-using mocking_extensions=MyMoney.Testing.spechelpers.core.mocking_extensions;
 
 namespace MyMoney.Infrastructure.Threading
 {
     [Concern(typeof (background_thread_factory))]
-    public abstract class behaves_like_a_background_thread_factory : concerns_for<IBackgroundThreadFactory, background_thread_factory>
+    public abstract class behaves_like_a_background_thread_factory :
+        concerns_for<IBackgroundThreadFactory, background_thread_factory>
     {
         public override IBackgroundThreadFactory create_sut()
         {
@@ -23,10 +23,10 @@ namespace MyMoney.Infrastructure.Threading
 
     public class when_creating_a_background_thread : behaves_like_a_background_thread_factory
     {
-        it should_return_an_instance_of_a_background_thread = () => assertion_extensions.should_not_be_null(result);
+        it should_return_an_instance_of_a_background_thread = () => result.should_not_be_null();
 
         it should_lookup_an_instance_of_the_command_to_execute =
-            () => mocking_extensions.was_told_to(registry, r => r.get_a<IDisposableCommand>());
+            () => registry.was_told_to(r => r.get_a<IDisposableCommand>());
 
         because b = () => { result = sut.create_for<IDisposableCommand>(); };
 
trunk/product/MyMoney/Presentation/Model/Projects/file.cs
@@ -1,3 +1,4 @@
+using System;
 using System.IO;
 using MyMoney.Infrastructure.Extensions;
 
@@ -28,6 +29,13 @@ namespace MyMoney.Presentation.Model.Projects
         {
             this.log().debug("copying file {0} to {1}", path, file_to_overwrite.path);
             File.Copy(path, file_to_overwrite.path, true);
+
+            //using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
+            //{
+            //    var content = new byte[fs.Length];
+            //    fs.Read(content, 0, Convert.ToInt32(fs.Length));
+            //    File.WriteAllBytes(file_to_overwrite.path, content);
+            //}
         }
 
         public static implicit operator ApplicationFile(string file_path)
trunk/product/MyMoney/Presentation/Presenters/income/add_new_income_presenter_specs.cs
@@ -72,7 +72,7 @@ namespace MyMoney.Presentation.Presenters.income
                         {
                             var a_company = an<ICompany>();
                             var matching_income = an<IIncome>();
-                            var today = new date(2008, 12, 26);
+                            var today = new Date(2008, 12, 26);
 
                             income = new income_submission_dto
                                          {
trunk/product/MyMoney/Presentation/Resources/ApplicationImage.cs
@@ -13,7 +13,14 @@ namespace MyMoney.Presentation.Resources
         public ApplicationImage(string name_of_the_image)
         {
             this.name_of_the_image = name_of_the_image;
-            underlying_image = Image.FromFile(FullPathToTheFile(this));
+            try
+            {
+                underlying_image = Image.FromFile(FullPathToTheFile(this));
+            }
+            catch (Exception exception)
+            {
+                Console.WriteLine(exception);
+            }
         }
 
         public static implicit operator Image(ApplicationImage image_to_convert)
trunk/product/MyMoney/Tasks/application/CustomerTasks.cs
@@ -26,7 +26,7 @@ namespace MyMoney.Tasks.application
             var c = repository.all<IAccountHolder>().SingleOrDefault();
 
             if (null == c) {
-                return new account_holder();
+                return new AccountHolder();
             }
 
             return c;
trunk/product/MyMoney/Testing/spechelpers/core/assertion_extensions.cs → trunk/product/MyMoney/Testing/spechelpers/core/assertions.cs
@@ -6,7 +6,7 @@ using MbUnit.Framework;
 
 namespace MyMoney.Testing.spechelpers.core
 {
-    public static class assertion_extensions
+    public static class assertions
     {
         [AssertionMethod]
         public static void should_be_equal_to<T>(this T item_to_validate, T expected_value)
trunk/product/MyMoney/MyMoney.csproj
@@ -174,19 +174,19 @@
     <Compile Include="Domain\Core\Entity.cs" />
     <Compile Include="Domain\Core\date.cs" />
     <Compile Include="Domain\Core\IRepository.cs" />
-    <Compile Include="DataAccess\db40\session_factory.cs" />
-    <Compile Include="DataAccess\db40\session_factory_specs.cs" />
+    <Compile Include="DataAccess\db40\SessionFactory.cs" />
+    <Compile Include="DataAccess\db40\SessionFactorySpecs.cs" />
     <Compile Include="Domain\accounting\billing\billing_extensions.cs" />
     <Compile Include="Domain\accounting\billing\Company.cs" />
     <Compile Include="Domain\accounting\billing\company_specs.cs" />
-    <Compile Include="Domain\accounting\account_holder.cs" />
-    <Compile Include="Domain\accounting\account_holder_specs.cs" />
+    <Compile Include="Domain\accounting\AccountHolder.cs" />
+    <Compile Include="Domain\accounting\AccountHolderSpecs.cs" />
     <Compile Include="Domain\accounting\billing\total_payments_calculator.cs" />
     <Compile Include="Domain\Core\IYear.cs" />
     <Compile Include="Domain\Core\money_extensions.cs" />
     <Compile Include="Domain\Core\money_extensions_specs.cs" />
     <Compile Include="Domain\accounting\financial_growth\income_specs.cs" />
-    <Compile Include="Domain\Core\money_specs.cs" />
+    <Compile Include="Domain\Core\MoneySpecs.cs" />
     <Compile Include="Domain\Core\range.cs" />
     <Compile Include="Domain\Core\range_specs.cs" />
     <Compile Include="Domain\repositories\company_repository_extensions.cs" />
@@ -221,7 +221,7 @@
     <Compile Include="Infrastructure\registries\default_registry.cs" />
     <Compile Include="Infrastructure\registries\default_registry_specs.cs" />
     <Compile Include="Domain\accounting\billing\Bill.cs" />
-    <Compile Include="Domain\accounting\billing\bill_specs.cs" />
+    <Compile Include="Domain\accounting\billing\BillSpecs.cs" />
     <Compile Include="Domain\accounting\general_ledger.cs" />
     <Compile Include="Domain\accounting\GeneralLedgerSpecs.cs" />
     <Compile Include="Domain\accounting\billing\ILedgerEntry.cs" />
@@ -663,7 +663,7 @@
       <DesignTimeSharedInput>True</DesignTimeSharedInput>
     </Compile>
     <Compile Include="Testing\Call.cs" />
-    <Compile Include="Testing\spechelpers\core\assertion_extensions.cs" />
+    <Compile Include="Testing\spechelpers\core\assertions.cs" />
     <Compile Include="Testing\spechelpers\core\mocking_extensions.cs" />
     <Compile Include="Testing\MetaData\ConcernAttribute.cs" />
     <Compile Include="windows.ui\start_the_application.cs" />