Exemple #1
0
        private static bool TryExtract(Json.Expressions.ObjectExpression json, out StateVersionTestCase testCase)
        {
            if (json.Members[TestTypeKey] is not Json.Expressions.ConstantExpression testTypeExpr)
            {
                testCase = default;
                return(false);
            }
            var testType = Type.GetType(testTypeExpr.Value.ToString());

            if (testType == null)
            {
                testCase = default;
                return(false);
            }

            var testMethodExpr = json.Members[TestMethodKey] as Json.Expressions.ConstantExpression;
            var testMethodName = testMethodExpr.Value.ToString();
            var testMethod     = testType.GetMethod(testMethodName, TestArgs);

            if (testMethod == null)
            {
                testCase = default;
                return(false);
            }

            if (json.Members[SavedAtKey] is not Json.Expressions.ConstantExpression savedAtExpr || !long.TryParse(savedAtExpr.Value.ToString(), out var savedAt))
            {
                testCase = default;
                return(false);
            }

            testCase = new StateVersionTestCase(testMethod, savedAt);
            return(true);
        }
        public void Add(MemberInfo testMethod, long savedAt, byte[] state)
        {
            EnsureDirectory();
            var fileNameBase  = GetFileName(testMethod, savedAt);
            var stateFileName = fileNameBase + ".state";

            File.WriteAllBytes(GetPath(stateFileName), state);
            var testCaseFileName = fileNameBase + ".json";
            var testCase         = new StateVersionTestCase(testMethod, savedAt);

            File.WriteAllText(GetPath(testCaseFileName), testCase.ToString());
        }
        public IEnumerable <StateVersionTestCase> GetTestCasesByMember(MemberInfo member)
        {
            var fileNameBase = GetFileNameBase(member);
            var regex        = new Regex("^" + fileNameBase + @"_\d+\.json$", RegexOptions.Compiled);

            foreach (var f in Directory.GetFiles(BaseDirectory).Where(f => regex.IsMatch(Path.GetFileName(f))))
            {
                if (StateVersionTestCase.TryParse(File.ReadAllText(f), out var testCase))
                {
                    Debug.Assert(testCase.TestMethod == member);
                    yield return(testCase);
                }
            }
        }
Exemple #4
0
        public static bool TryParse(string data, out StateVersionTestCase testCase)
        {
            Json.Expressions.Expression json;
            try
            {
                json = Json.Expressions.Expression.Parse(data);
            }
            catch (Json.Parser.ParseException)
            {
                testCase = default;
                return(false);
            }

            var obj = json as Json.Expressions.ObjectExpression;

            if (json != null && obj == null)
            {
                testCase = default;
                return(false);
            }

            return(TryExtract(obj, out testCase));
        }
        public byte[] GetState(StateVersionTestCase testCase)
        {
            var stateFileName = GetFileName(testCase.TestMethod, testCase.SavedAt) + ".state";

            return(File.ReadAllBytes(GetPath(stateFileName)));
        }