Пример #1
0
        public void ReplaceLiterals(string n1, string t1, string t2, string expectedResult, Refactorization r)
        {
            string resultStr = string.Empty;

            if (r == Refactorization.Current)
            {
                Name result = null;
                var  name   = Name.BuildName(n1);
                for (long i = 0; i < reps; i++)
                {
                    result = name.SwapTerms((Name)t1, (Name)t2);
                }
                resultStr = RemoveWhiteSpace(result.ToString());
            }
            else if (r == Refactorization.New)
            {
                SimpleName result = null;
                var        name   = new SimpleName(n1);
                for (long i = 0; i < reps; i++)
                {
                    result = SimpleWFN.ReplaceLiterals(name, t1, t2);
                }
                resultStr = result.ToString();
            }

            Assert.That(string.Equals(resultStr, expectedResult, StringComparison.InvariantCultureIgnoreCase));
        }
Пример #2
0
        public void MakeGround_GroundedName(string n1, string var, string sub, string expectedResult, Refactorization r)
        {
            String result = string.Empty;

            if (r == Refactorization.New)
            {
                var        name       = new SimpleName(n1);
                SimpleName nameResult = null;
                Dictionary <string, SimpleName> subs = new Dictionary <string, SimpleName>();
                subs[var] = new SimpleName(sub);
                for (long i = 0; i < reps; i++)
                {
                    nameResult = SimpleWFN.MakeGround(name, subs);
                }
                result = nameResult.ToString();
            }
            else if (r == Refactorization.Current)
            {
                var             name       = Name.BuildName(n1);
                Name            nameResult = null;
                SubstitutionSet subSet     = new SubstitutionSet();
                subSet.AddSubstitution(new Substitution("[x]/J(I)"));
                for (long i = 0; i < reps; i++)
                {
                    nameResult = name.MakeGround(subSet);
                }
            }
            Assert.AreEqual(expectedResult, result);
        }
Пример #3
0
        public void Add_Variable_Tag_SimpleWFN(string n1, string tag, string expectedResult, Refactorization r)
        {
            string result = string.Empty;

            if (r == Refactorization.New)
            {
                SimpleName name    = new SimpleName(n1);
                SimpleName resName = null;
                for (long i = 0; i < reps; i++)
                {
                    resName = SimpleWFN.AddVariableTag(name, tag);
                }
                result = resName.ToString();
            }
            else if (r == Refactorization.Current)
            {
                Name name    = Name.BuildName(n1);
                Name resName = null;
                for (long i = 0; i < reps; i++)
                {
                    resName = name.ReplaceUnboundVariables("_tag");
                }
                result = RemoveWhiteSpace(resName.ToString());
            }

            Assert.AreEqual(expectedResult, result);
        }
Пример #4
0
        public void AddDefiningValCtor(SimpleName valCtorName, TypeExpr final)
        {
            var loc  = valCtorName._lexLocation;
            var name = valCtorName.ToString();

            if (ValueCtorMap.TryGetValue(name, out var ty))
            {
                throw new ValueCtorDuplicatedException(ty._lexLocation, loc);
            }
            _definingCtor.CheckAddValCtor(name, loc, final);
            CheckValCtorType(valCtorName, final);
        }
        private void CheckValCtorType(SimpleName valCtorName, TypeExpr valTy)
        {
            CheckGlobalName(valCtorName.ToString(), valCtorName._lexLocation);
            var kind = Typeof(_definingCtorEnv, valTy);

            if (kind == null)
            {
                throw new SemanticException("Invalid Type of Value Constructor", valCtorName._lexLocation);
            }
            var final = valTy.FinalType;
            //var errType = final.Match(DefiningCtorAsShape(),this);
            //no gadt so simplify into the following
            var expectingCtorTy = DefiningCtorAsType();
            var errType         = final.Match(expectingCtorTy, this);

            if (errType != null)
            {
                throw new InvalidFinalTypeForValueCtor(valCtorName, expectingCtorTy, final);
            }
        }
Пример #6
0
        public void ToString(string n1, string expectedResult, Refactorization r)
        {
            string result = string.Empty;

            if (r == Refactorization.Current)
            {
                var name = Name.BuildName(n1);
                for (long i = 0; i < reps; i++)
                {
                    result = name.ToString();
                }
                result = RemoveWhiteSpace(result);
            }
            else if (r == Refactorization.New)
            {
                var name = new SimpleName(n1);
                for (long i = 0; i < reps; i++)
                {
                    result = name.ToString();
                }
            }
            Assert.That(string.Equals(expectedResult, result, StringComparison.InvariantCultureIgnoreCase));
        }