/// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="version"></param>
        /// <returns></returns>
        protected override bool TryParseElement(XmlReader reader, string version)
        {
            if (reader.IsReadingElementOf(OpdsNamespaces.Opds.Value, "price"))
            {
                var price = new OpdsPrice();
                if (reader.HasAttributes)
                {
                    if (reader.MoveToAttribute("currencycode"))
                    {
                        if (reader.ReadAttributeValue())
                        {
                            price.CurrencyCode = reader.Value;
                            if (!CurrencyCodes.IsValid(price.CurrencyCode))
                            {
                                // TODO: Show Warning.
                            }
                        }

                        reader.MoveToElement();
                    }
                }

                price.Price = reader.ReadElementContentAsDecimal();
                prices.Add(price);
            }
            else if (reader.IsReadingElementOf(OpdsNamespaces.Opds.Value, "indirectAcquisition"))
            {
                ReadIndirectAcquisitions(reader, IndirectAcquisitions);
            }
            else
            {
                return(base.TryParseElement(reader, version));
            }

            return(true);
        }
 public void IsValidCurrencyCodeTest()
 {
     Assert.AreEqual(true, CurrencyCodes.IsValid("CNY"));
     Assert.AreEqual(true, CurrencyCodes.IsValid("USD"));
     Assert.AreEqual(false, CurrencyCodes.IsValid("BTC"));
 }