private string Fragment(NestedClosureCodeFragment fragment, int indent) { if (fragment.MethodCalls.Count == 1) { return(fragment.Parameter + " => " + Fragment(fragment.MethodCalls[0], typeQualified: false, fragment.Parameter, indent)); } var builder = new IndentedStringBuilder(); builder.AppendLine(fragment.Parameter + " =>"); for (var i = -1; i < indent; i++) { builder.IncrementIndent(); } builder.AppendLine("{"); using (builder.Indent()) { foreach (var methodCall in fragment.MethodCalls) { builder.AppendLines(Fragment(methodCall, typeQualified: false, fragment.Parameter, indent + 1), skipFinalNewline: true); builder.AppendLine(";"); } } builder.AppendLine("}"); return(builder.ToString()); }
public virtual void UseProviderMethodIsGeneratedCorrectlyWithOptions() { var codeGenerator = new MySQLCodeGenerator( new ProviderCodeGeneratorDependencies( Enumerable.Empty <IProviderCodeGeneratorPlugin>())); var providerOptions = new MethodCallCodeFragment("SetProviderOption"); var result = codeGenerator.GenerateUseProvider("Data Source=Test", providerOptions); Assert.AreEqual("UseMySQL", result.Method); Assert.That(result.Arguments, Has.Exactly(1).EqualTo("Data Source=Test")); Assert.IsInstanceOf <NestedClosureCodeFragment>(result.Arguments[1]); NestedClosureCodeFragment nestedClosure = (NestedClosureCodeFragment)result.Arguments[1]; Assert.AreEqual("x", nestedClosure.Parameter); Assert.AreSame(providerOptions, nestedClosure.MethodCall); Assert.Null(result.ChainedCall); }
private string Fragment(NestedClosureCodeFragment fragment) { if (fragment.MethodCalls.Count == 1) { return(fragment.Parameter + " => " + fragment.Parameter + Fragment(fragment.MethodCalls[0])); } var builder = new IndentedStringBuilder(); builder.AppendLine(fragment.Parameter + " =>"); builder.AppendLine("{"); using (builder.Indent()) { foreach (var methodCall in fragment.MethodCalls) { builder.Append(fragment.Parameter + Fragment(methodCall)); builder.AppendLine(";"); } } builder.AppendLine("}"); return(builder.ToString()); }
private string Fragment(NestedClosureCodeFragment fragment) => fragment.Parameter + " => " + fragment.Parameter + Fragment(fragment.MethodCall);