public void LastOnSevenTuple() { const int expected = 42; var t = new Tuple <int, int, int, int, int, int, int>(1, 1, 1, 1, 1, 1, 42); int actual = t.Last(); Assert.AreEqual(expected, actual); }
public string Run() { BigInteger max = 0; int maxIndex = 0; for (int i = 2; i <= 1000; i++) { if (Math.Sqrt(i) % 1 == 0) continue; List<Tuple<BigInteger, BigInteger, BigInteger>> solutions = getPeriod(i); BigInteger tempMax = 0; if (solutions.Count % 2 == 0) { tempMax = (BigInteger)(solutions.Last().Item1 * solutions.Last().Item3 + solutions.Last().Item2); } else { solutions.Reverse(); Tuple<BigInteger, BigInteger, BigInteger>[] fractions = new Tuple<BigInteger, BigInteger, BigInteger>[solutions.Count]; fractions[0] = new Tuple<BigInteger, BigInteger, BigInteger>(1, solutions.ElementAt(0).Item3, 0); for (int x = 1; x < fractions.Length; x++) { BigInteger numerator = (solutions.ElementAt(x).Item3 * fractions[x - 1].Item1) + (x > 1 ? fractions[x - 1].Item2 : 0); fractions[x] = new Tuple<BigInteger, BigInteger, BigInteger>(numerator, fractions[x - 1].Item1, numerator + fractions[x - 1].Item1); } tempMax = (BigInteger)fractions.Last().Item3; } if (tempMax > max) { maxIndex = i; max = tempMax; } } return maxIndex.ToString(); }
public void LastTwoTuple() { const int expected = 42; var t = new Tuple<int, int>(1, 42); int actual = t.Last(); Assert.AreEqual(expected, actual); }
Variable GetCoreProperty(string propName, ParsingScript script = null) { Variable result = Variable.EmptyInstance; if (m_propertyMap.TryGetValue(propName, out result) || m_propertyMap.TryGetValue(GetRealName(propName), out result)) { return(result); } else if (propName.Equals(Constants.OBJECT_PROPERTIES, StringComparison.OrdinalIgnoreCase)) { return(new Variable(GetProperties())); } else if (propName.Equals(Constants.OBJECT_TYPE, StringComparison.OrdinalIgnoreCase)) { return(new Variable((int)Type)); } else if (propName.Equals(Constants.SIZE, StringComparison.OrdinalIgnoreCase)) { return(new Variable(GetSize())); } else if (propName.Equals(Constants.UPPER, StringComparison.OrdinalIgnoreCase)) { return(new Variable(AsString().ToUpper())); } else if (propName.Equals(Constants.LOWER, StringComparison.OrdinalIgnoreCase)) { return(new Variable(AsString().ToLower())); } else if (propName.Equals(Constants.STRING, StringComparison.OrdinalIgnoreCase)) { return(new Variable(AsString())); } else if (propName.Equals(Constants.FIRST, StringComparison.OrdinalIgnoreCase)) { if (Tuple != null && Tuple.Count > 0) { return(Tuple[0]); } return(AsString().Length > 0 ? new Variable("" + AsString()[0]) : Variable.EmptyInstance); } else if (propName.Equals(Constants.LAST, StringComparison.OrdinalIgnoreCase)) { if (Tuple != null && Tuple.Count > 0) { return(Tuple.Last <Variable>()); } return(AsString().Length > 0 ? new Variable("" + AsString().Last <char>()) : Variable.EmptyInstance); } else if (script != null && propName.Equals(Constants.INDEX_OF, StringComparison.OrdinalIgnoreCase)) { List <Variable> args = script.GetFunctionArgs(); Utils.CheckArgs(args.Count, 1, propName); string search = Utils.GetSafeString(args, 0); int startFrom = Utils.GetSafeInt(args, 1, 0); string param = Utils.GetSafeString(args, 2, "no_case"); StringComparison comp = param.Equals("case", StringComparison.OrdinalIgnoreCase) ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase; return(new Variable(AsString().IndexOf(search, startFrom, comp))); } else if (script != null && propName.Equals(Constants.SUBSTRING, StringComparison.OrdinalIgnoreCase)) { List <Variable> args = script.GetFunctionArgs(); Utils.CheckArgs(args.Count, 1, propName); int startFrom = Utils.GetSafeInt(args, 0, 0); int length = Utils.GetSafeInt(args, 1, AsString().Length); length = Math.Min(length, AsString().Length - startFrom); return(new Variable(AsString().Substring(startFrom, length))); } else if (script != null && propName.Equals(Constants.REVERSE, StringComparison.OrdinalIgnoreCase)) { script.GetFunctionArgs(); if (Tuple != null) { Tuple.Reverse(); } else if (Type == VarType.STRING) { char[] charArray = AsString().ToCharArray(); Array.Reverse(charArray); String = new string(charArray); } return(this); } else if (script != null && propName.Equals(Constants.SORT, StringComparison.OrdinalIgnoreCase)) { script.GetFunctionArgs(); Sort(); return(this); } else if (script != null && propName.Equals(Constants.SPLIT, StringComparison.OrdinalIgnoreCase)) { List <Variable> args = script.GetFunctionArgs(); string sep = Utils.GetSafeString(args, 0, " "); var option = Utils.GetSafeString(args, 1); return(TokenizeFunction.Tokenize(AsString(), sep, option)); } else if (script != null && propName.Equals(Constants.JOIN, StringComparison.OrdinalIgnoreCase)) { List <Variable> args = script.GetFunctionArgs(); string sep = Utils.GetSafeString(args, 0, " "); if (Tuple == null) { return(new Variable(AsString())); } var join = string.Join(sep, Tuple); return(new Variable(join)); } else if (script != null && propName.Equals(Constants.ADD, StringComparison.OrdinalIgnoreCase)) { List <Variable> args = script.GetFunctionArgs(); Utils.CheckArgs(args.Count, 1, propName); Variable var = Utils.GetSafeVariable(args, 0); if (Tuple != null) { Tuple.Add(var); } else if (Type == VarType.NUMBER) { Value += var.AsDouble(); } else { String += var.AsString(); } return(var); } else if (script != null && propName.Equals(Constants.AT, StringComparison.OrdinalIgnoreCase)) { List <Variable> args = script.GetFunctionArgs(); Utils.CheckArgs(args.Count, 1, propName); int at = Utils.GetSafeInt(args, 0); if (Tuple != null && Tuple.Count > 0) { return(Tuple.Count > at ? Tuple[at] : Variable.EmptyInstance); } string str = AsString(); return(str.Length > at ? new Variable("" + str[at]) : Variable.EmptyInstance); } else if (script != null && propName.Equals(Constants.REPLACE, StringComparison.OrdinalIgnoreCase)) { List <Variable> args = script.GetFunctionArgs(); Utils.CheckArgs(args.Count, 2, propName); string oldVal = Utils.GetSafeString(args, 0); string newVal = Utils.GetSafeString(args, 1); return(new Variable(AsString().Replace(oldVal, newVal))); } else if (propName.Equals(Constants.EMPTY_WHITE, StringComparison.OrdinalIgnoreCase)) { bool isEmpty = string.IsNullOrWhiteSpace(AsString()); return(new Variable(isEmpty)); } else if (script != null && propName.Equals(Constants.REPLACE_TRIM, StringComparison.OrdinalIgnoreCase)) { List <Variable> args = script.GetFunctionArgs(); Utils.CheckArgs(args.Count, 2, propName); string currentValue = AsString(); for (int i = 0; i < args.Count; i += 2) { string oldVal = Utils.GetSafeString(args, i); string newVal = Utils.GetSafeString(args, i + 1); currentValue = currentValue.Replace(oldVal, newVal); } return(new Variable(currentValue.Trim())); } else if (script != null && propName.Equals(Constants.CONTAINS, StringComparison.OrdinalIgnoreCase)) { List <Variable> args = script.GetFunctionArgs(); Utils.CheckArgs(args.Count, 1, propName); string val = Utils.GetSafeString(args, 0); string param = Utils.GetSafeString(args, 1, "no_case"); StringComparison comp = param.Equals("case", StringComparison.OrdinalIgnoreCase) ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase; bool contains = false; if (Type == Variable.VarType.ARRAY) { string lower = val.ToLower(); contains = m_dictionary != null && m_dictionary.ContainsKey(lower); if (!contains && Tuple != null) { foreach (var item in Tuple) { if (item.AsString().Equals(val, comp)) { contains = true; break; } } } } else { contains = val != "" && AsString().IndexOf(val, comp) >= 0; } return(new Variable(contains)); } else if (script != null && propName.Equals(Constants.EQUALS, StringComparison.OrdinalIgnoreCase)) { List <Variable> args = script.GetFunctionArgs(); Utils.CheckArgs(args.Count, 1, propName); string val = Utils.GetSafeString(args, 0); string param = Utils.GetSafeString(args, 1, "no_case"); StringComparison comp = param.Equals("case", StringComparison.OrdinalIgnoreCase) ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase; return(new Variable(AsString().Equals(val, comp))); } else if (script != null && propName.Equals(Constants.STARTS_WITH, StringComparison.OrdinalIgnoreCase)) { List <Variable> args = script.GetFunctionArgs(); Utils.CheckArgs(args.Count, 1, propName); string val = Utils.GetSafeString(args, 0); string param = Utils.GetSafeString(args, 1, "no_case"); StringComparison comp = param.Equals("case", StringComparison.OrdinalIgnoreCase) ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase; return(new Variable(AsString().StartsWith(val, comp))); } else if (script != null && propName.Equals(Constants.ENDS_WITH, StringComparison.OrdinalIgnoreCase)) { List <Variable> args = script.GetFunctionArgs(); Utils.CheckArgs(args.Count, 1, propName); string val = Utils.GetSafeString(args, 0); string param = Utils.GetSafeString(args, 1, "no_case"); StringComparison comp = param.Equals("case", StringComparison.OrdinalIgnoreCase) ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase; return(new Variable(AsString().EndsWith(val, comp))); } else if (script != null && propName.Equals(Constants.TRIM, StringComparison.OrdinalIgnoreCase)) { script.GetFunctionArgs(); return(new Variable(AsString().Trim())); } else if (propName.Equals(Constants.KEYS, StringComparison.OrdinalIgnoreCase)) { List <Variable> results = GetAllKeys(); return(new Variable(results)); } return(result); }
public override Task Execute() { Workspace.Instance.CreateEphemeral(ServiceMap); var treeRenderer = new TreeRenderer(); treeRenderer.AfterPluginPointerDrawn += (indent, isLast, pluginPointer) => { _tasksGenerated++; var plugin = _loadedExtensions.FirstOrDefault(e => e.Item1.Equals(pluginPointer.Plugin)); var newIndent = treeRenderer.WriteExecutedTest("Supports Plugin type?", () => plugin != null, indent, isLast); if (plugin != null) { var tests = new Tuple <string, Func <bool?> >[] { Tuple.Create("Plugin pointer has valid options?", new Func <bool?>(() => Workspace.Instance.Validate(pluginPointer))), Tuple.Create("Resource Map contains Resource?", new Func <bool?>(() => { if (pluginPointer.Resource == null) { return(null); } return(ResourceManager.Instance.ContainsPointer(pluginPointer.Resource)); })) }; foreach (var test in tests) { treeRenderer.WriteExecutedTest(test.Item1, test.Item2, newIndent, tests.Last().Equals(test)); } } }; Console.WriteLine(Output.Reversed().White().Text(Path.GetFileName(ServiceMap))); foreach (var feature in Workspace.Instance.Features) { treeRenderer.PrintNode(feature, "", Workspace.Instance.Features.Last() == feature); } Logger.LogInformation( "Validation of {0} complete! Tests: {1} passed, {2} failed. Service Map scan will generate {3} tasks.", ServiceMap, treeRenderer.TestsPassed, treeRenderer.TestsFailed, _tasksGenerated); return(Task.FromResult(0)); }