public FileBasedTestRepository(string baseDir)
        {
            this.baseDir = baseDir;
            string indexFile = baseDir + "/" + IndexFileName;

            this.blobPath = baseDir + "/" + BlobFileName;

            if (!Directory.Exists(baseDir))
            {
                Directory.CreateDirectory(baseDir);
            }

            if (File.Exists(indexFile))
            {
                foreach (var line in File.ReadAllLines(indexFile))
                {
                    string[] parts = line.Split('&').Select(HttpUtility.UrlDecode).ToArray();
                    index[parts[0]] = new FileBasedTestResource(parts[1]);
                }
            }
            else
            {
                File.Create(indexFile);
            }

            saveIndex = delegate() {
                var lines = index.Select(kvp =>
                                         HttpUtility.UrlEncode(kvp.Key) + '&' +
                                         HttpUtility.UrlEncode(kvp.Value.Path));

                File.WriteAllLines(indexFile, lines);
            };
        }
        public ITestResource CreateResource(string name)
        {
            if (index.ContainsKey(name))
            {
                throw new Exception("Resource " + name + " already exists");
            }

            string realPath = baseDir + '/' + HttpUtility.UrlEncode(name);

            File.Create(realPath).Close();
            index[name] = new FileBasedTestResource(realPath);
            saveIndex();
            return(GetResource(name));
        }