// ==================================================
        // Methods

        /// <summary>
        /// Initializes repository with all local GPX files
        /// </summary>
        public void Init(string uri)
        {
            lock (_init)             // TODO: use internal init for basic cache
            {
                if (Convert.ToBoolean(_init))
                {
                    return;
                }

                _trails = new BasicCacheService <TopoTrailInfo>();
                var root = new DirectoryInfo(uri);
                _rootUri = root.FullName;
                foreach (var dir in root.EnumerateDirectories())
                {
                    var country = GeoCountryInfo.ByName(dir.Name);
                    if (country != null)
                    {
                        foreach (var file in dir.EnumerateFiles("*.gpx"))
                        {
                            var trail = LoadTrail(file);
                            _trails.Add(trail);
                        }
                    }
                }
                _init = true;
            }
        }
        public void GeoCountryInfo_ByNameDeep()
        {
            var g2 = GeoCountryInfo.ByName("Republik Oesterreich", true);

            Assert.AreEqual("AT", g2.ISO2);

            var g3 = GeoCountryInfo.ByName("United States of America", true);

            Assert.AreEqual("USA", g3.ISO3);
        }
        public void GeoCountryInfo_ByName()
        {
            var g2 = GeoCountryInfo.ByName("Australia");

            Assert.AreEqual("AU", g2.ISO2);

            var g3 = GeoCountryInfo.ByName("United States");

            Assert.AreEqual("USA", g3.ISO3);
        }