public void SixDigits()
                {
                    var account = new BankAccount(NUMBER, SORTCODE, NAME);

                    var serialize = account.Serialize(SerializeMethod.FixedWidth);

                    Assert.Equal(SORTCODE, serialize.SortCode);
                }
                public void Properties(string prop1, string prop2, string prop3)
                {
                    var properties = new [] { prop1, prop2, prop3 };

                    var account = new BankAccount(BankAccountTest.NUMBER,
                            BankAccountTest.SORTCODE, BankAccountTest.NAME);

                    var serialize = account.Serialize(SerializeMethod.FixedWidth, properties);

                    var composed = "";
                    foreach(var prop in properties)
                    {
                        var p = typeof(ISerializedAccount).GetProperty(prop);
                        composed += p.GetValue(serialize, null).ToString();
                    }

                    Assert.Equal(composed, serialize.Line);
                }
                public void Valid_Data(string number, string expected, Bank bank)
                {
                    var account = new BankAccount(number, SORTCODE, NAME, bank);

                    var serialize = account.Serialize(SerializeMethod.FixedWidth);

                    Assert.Equal(expected, serialize.Number);
                }
                public void Default()
                {
                    var account = new BankAccount(BankAccountTest.NUMBER,
                            BankAccountTest.SORTCODE, BankAccountTest.NAME);

                    var serialize = account.Serialize(SerializeMethod.FixedWidth);

                    var composed = serialize.SortCode + serialize.Number + serialize.Name;

                    Assert.Equal(composed, serialize.Line);
                }
                public void Configuration()
                {
                    var configuration = new DirectDebitConfiguration();
                    configuration.BankAccount.Add(new FieldConfiguration { Field = "Number" });

                    var account = new BankAccount(BankAccountTest.NUMBER,
                            BankAccountTest.SORTCODE, BankAccountTest.NAME);

                    var serialize = account.Serialize(SerializeMethod.FixedWidth, configuration);

                    Assert.Equal(serialize.Number, serialize.Line);
                }
                public void Uppercase()
                {
                    var account = new BankAccount(NUMBER, SORTCODE, NAME);

                    var serialize = account.Serialize(SerializeMethod.FixedWidth);

                    Assert.True(Regex.IsMatch(serialize.Name, @"^[A-Z\s]+$"));
                }
                public void Short_Name_Pad()
                {
                    var shortname = "Bob";
                    var account = new BankAccount(NUMBER, SORTCODE, shortname);
                    var serialize = account.Serialize(SerializeMethod.FixedWidth);

                    Assert.Equal("BOB               ", serialize.Name);
                }
                public void Long_Names_Truncate()
                {
                    var longname = "Mr Bob Johnny Martin Horrocks III";
                    var account = new BankAccount(NUMBER, SORTCODE, longname);
                    var serialize = account.Serialize(SerializeMethod.FixedWidth);

                    Assert.Equal("MR BOB JOHNNY MART", serialize.Name);
                }