public void TestCalculateChangeList() {

            WhereIsMyChangeManager whereIsMyChangeManager = new WhereIsMyChangeManager();
            PrivateObject privateObject = new PrivateObject(whereIsMyChangeManager);
            object response = privateObject.Invoke("CalculateChangeList", 987654321555666);
             
            List<KeyValuePair<int, long>> calculateChangeList = (List<KeyValuePair<int, long>>)response;

            Assert.IsNotNull(calculateChangeList);
        }
        private void CalculateChange() {
            this.UxTxtChangeAmount.Text = string.Empty;
            ChangeRequest changeRequest = new ChangeRequest();
            long productAmount;
            long paidAmount;
            ErrorCollection = new List<string>();

            if (long.TryParse(this.UxTxtProductAmount.Text, out productAmount) == false) {
                this.ErrorCollection.Add("Valor do produto precisa ser inteiro.");
            }
            if (long.TryParse(this.UxTxtPaidAmount.Text, out paidAmount) == false) {
                this.ErrorCollection.Add("Valor pago precisa ser inteiro.");
            }
            if (paidAmount < productAmount) {
                this.ErrorCollection.Add("O valor pago precisa ser igual ou maior do que o valor do produto.");
            }
            if (this.ErrorCollection.Any()) {
                foreach (string error in this.ErrorCollection) {
                    this.UxTxtChangeAmount.Text += error + Environment.NewLine;
                }
                return;
            }

            IWhereIsMyChangeManager whereIsMyChange = new WhereIsMyChangeManager();

            changeRequest.PaidAmount = paidAmount;
            changeRequest.ProductAmount = productAmount;

            ChangeResponse changeResponse = whereIsMyChange.CalculateChange(changeRequest);

            if (changeResponse.OperationReportList != null && changeResponse.OperationReportList.Any()) {
                foreach (OperationReport operationReport in changeResponse.OperationReportList) {

                    this.UxTxtChangeAmount.Text += string.Format("{0} - {1}{2}", operationReport.Field, operationReport.Message, Environment.NewLine);
                }
            } else {
                foreach (var item in changeResponse.ChangeList) {
                    this.UxTxtChangeAmount.Text += string.Format("{0}: {1} {2}", item.Key, item.Value, Environment.NewLine);
                }
                this.UxTxtChangeAmount.Text += string.Format("Troco: {0}{1}", changeResponse.ChangeAmount, Environment.NewLine);
            }
        }