Skip to content

Commit

Permalink
Merge pull request #20 from rbeauchamp-lendingtree/feature/4_codecleanup
Browse files Browse the repository at this point in the history
#4: Code cleanup in preparation for async implementation
  • Loading branch information
rexm committed Mar 24, 2014
2 parents ce43986 + 83a56fb commit 96f7aa9
Show file tree
Hide file tree
Showing 85 changed files with 1,605 additions and 1,892 deletions.
1 change: 1 addition & 0 deletions source/.nuget/NuGet.Config
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>

<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
Expand Down
2 changes: 0 additions & 2 deletions source/Cucumber.SimpleDb.Test/Cucumber.SimpleDb.Test.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,6 @@
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(SolutionDir).nuget\NuGet.targets" />
<ItemGroup />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,67 +16,79 @@ public QueryOutputCaptureService(Action<string> output)

#region ISimpleDbService implementation

public XElement BatchDeleteAttributes (string domain, params object[] items)
public XElement BatchDeleteAttributes(string domain, params object[] items)
{
throw new NotImplementedException ();
throw new NotImplementedException();
}
public XElement BatchPutAttributes (string domain, params object[] items)

public XElement BatchPutAttributes(string domain, params object[] items)
{
throw new NotImplementedException ();
throw new NotImplementedException();
}
public XElement CreateDomain (string domain)

public XElement CreateDomain(string domain)
{
throw new NotImplementedException ();
throw new NotImplementedException();
}
public XElement DeleteDomain (string domain)

public XElement DeleteDomain(string domain)
{
throw new NotImplementedException ();
throw new NotImplementedException();
}
public XElement DeleteAttributes (string domain, string itemName, params object[] attributes)

public XElement DeleteAttributes(string domain, string itemName, params object[] attributes)
{
throw new NotImplementedException ();
throw new NotImplementedException();
}
public XElement GetDomainMeta (string domain)

public XElement GetDomainMeta(string domain)
{
throw new NotImplementedException ();
throw new NotImplementedException();
}
public XElement ListDomains ()

public XElement ListDomains()
{
throw new NotImplementedException ();
throw new NotImplementedException();
}
public XElement ListDomains (string nextPageToken)

public XElement ListDomains(string nextPageToken)
{
throw new NotImplementedException ();
throw new NotImplementedException();
}
public XElement PutAttributes (string domain, string name, params object[] attributes)

public XElement PutAttributes(string domain, string name, params object[] attributes)
{
throw new NotImplementedException ();
throw new NotImplementedException();
}
public XElement GetAttributes (string domain, string name, bool useConsistency, params string[] attributeNames)

public XElement GetAttributes(string domain, string name, bool useConsistency, params string[] attributeNames)
{
throw new NotImplementedException ();
throw new NotImplementedException();
}
public XElement Select (string query, bool useConsistency)

public XElement Select(string query, bool useConsistency)
{
return Select(query, useConsistency, null);
}
public XElement Select (string query, bool useConsistency, string nextPageToken)

public XElement Select(string query, bool useConsistency, string nextPageToken)
{
_output(query);
XNamespace ns = "http://sdb.amazonaws.com/doc/2009-04-15/";
return new XElement(ns + "SelectResponse", new XElement(ns + "SelectResult", new XElement[]
return new XElement(ns + "SelectResponse", new XElement(ns + "SelectResult", new[]
{
new XElement(ns + "Item", new[]
{
new XElement(ns + "Item", new XElement[]{
new XElement(ns + "Name", "ItemName1"),
new XElement(ns + "Attribute", new XElement[] {
new XElement(ns + "Name", "Count"),
new XElement(ns + "Value", 1)
})
new XElement(ns + "Name", "ItemName1"),
new XElement(ns + "Attribute", new[]
{
new XElement(ns + "Name", "Count"),
new XElement(ns + "Value", 1)
})
}));
})
}));
}

#endregion
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,31 @@

namespace Cucumber.SimpleDb.Test
{
[TestFixture()]
[TestFixture]
public class QueryOutputTest
{
[Test]
public void ImplicitSelect()
{
var query = GetQueryString (context =>
context.Domains ["TestDomain1"].Items);
Assert.AreEqual ("SELECT * FROM `TestDomain1`", query);
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items);
Assert.AreEqual("SELECT * FROM `TestDomain1`", query);
}

[Test]
public void WhereStringBasic ()
public void WhereStringBasic()
{
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items.Where(i => i["TestAtt1"] == "TestValue1"));
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items.Where(i => i["TestAtt1"] == "TestValue1"));
Assert.AreEqual("SELECT * FROM `TestDomain1` WHERE `TestAtt1` = \"TestValue1\"", query);
}

[Test]
public void WhereAndString()
{
var query = GetQueryString (context =>
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items.Where(i =>
i["TestAtt1"] == "hello" && i["TestAtt2"] == "world"));
i["TestAtt1"] == "hello" && i["TestAtt2"] == "world"));
Assert.AreEqual("SELECT * FROM `TestDomain1` WHERE `TestAtt1` = \"hello\" AND `TestAtt2` = \"world\"", query);
}

Expand All @@ -37,42 +37,42 @@ public void WhereContainsString()
{
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items.Where(i =>
i["TestAtt1"].StartsWith("searchFor")));
i["TestAtt1"].StartsWith("searchFor")));
Assert.AreEqual("SELECT * FROM `TestDomain1` WHERE `TestAtt1` LIKE \"searchFor%\"", query);
}

[Test]
public void WhereNotStartsWithString()
{
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items.Where(i =>
i["TestAtt1"].StartsWith("searchFor") == false));
context.Domains["TestDomain1"].Items.Where(i =>
i["TestAtt1"].StartsWith("searchFor") == false));
Assert.AreEqual("SELECT * FROM `TestDomain1` WHERE `TestAtt1` NOT LIKE \"searchFor%\"", query);
}

[Test]
public void WhereNumberBasic()
{
var query = GetQueryString (context =>
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items.Where(i =>
i["TestAtt1"] == 1));
i["TestAtt1"] == 1));
Assert.AreEqual("SELECT * FROM `TestDomain1` WHERE `TestAtt1` = \"1\"", query);
}

[Test]
public void OrderByBasic()
{
var query = GetQueryString (context =>
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items.OrderBy(i => i["TestAtt1"]));
Assert.AreEqual("SELECT * FROM `TestDomain1` ORDERBY `TestAtt1` ASC", query);
}

[Test]
public void OrderByComplex()
{
var query = GetQueryString (context =>
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items
.OrderBy(i => i["TestAtt1"])
.OrderBy(i => i["TestAtt1"])
.OrderByDescending(i => i["TestAtt2"]));
Assert.AreEqual("SELECT * FROM `TestDomain1` ORDERBY `TestAtt1` ASC, `TestAtt2` DESC", query);
}
Expand All @@ -82,8 +82,8 @@ public void LimitBasic()
{
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items
.Where(i => i["TestAtt1"] > 0)
.Take(20));
.Where(i => i["TestAtt1"] > 0)
.Take(20));
Assert.AreEqual("SELECT * FROM `TestDomain1` WHERE `TestAtt1` > \"0\" LIMIT 20", query);
}

Expand All @@ -92,63 +92,63 @@ public void InBasic()
{
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items
.Where (i => i["TestAtt1"].In(1,2,3)));
.Where(i => i["TestAtt1"].In(1, 2, 3)));
Assert.AreEqual("SELECT * FROM `TestDomain1` WHERE `TestAtt1` IN( \"1\", \"2\", \"3\" )", query);
}

[Test]
public void BetweenBasic()
{
var query = GetQueryString (context =>
context.Domains ["TestDomain1"].Items
.Where (i => i ["TestAtt1"].Between (7.5, 50)));
Assert.AreEqual ("SELECT * FROM `TestDomain1` WHERE `TestAtt1` BETWEEN \"7.5\" AND \"50\"", query);
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items
.Where(i => i["TestAtt1"].Between(7.5, 50)));
Assert.AreEqual("SELECT * FROM `TestDomain1` WHERE `TestAtt1` BETWEEN \"7.5\" AND \"50\"", query);
}

[Test]
public void Every()
{
var query = GetQueryString (context =>
context.Domains ["TestDomain1"].Items
.Where (i => i ["TestAtt1"].Every () > 1));
Assert.AreEqual ("SELECT * FROM `TestDomain1` WHERE every( `TestAtt1` ) > \"1\"", query);
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items
.Where(i => i["TestAtt1"].Every() > 1));
Assert.AreEqual("SELECT * FROM `TestDomain1` WHERE every( `TestAtt1` ) > \"1\"", query);
}

[Test]
public void CountBasic()
{
var query = GetQueryString (context =>
context.Domains ["TestDomain1"].Items
.Count ());
Assert.AreEqual ("SELECT COUNT(*) FROM `TestDomain1`", query);
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items
.Count());
Assert.AreEqual("SELECT COUNT(*) FROM `TestDomain1`", query);
}

[Test]
public void CountWhere()
{
var query = GetQueryString (context =>
context.Domains ["TestDomain1"].Items
.Where(i => i["TestAtt1"] > 1)
.Count ());
Assert.AreEqual ("SELECT COUNT(*) FROM `TestDomain1` WHERE `TestAtt1` > \"1\"", query);
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items
.Where(i => i["TestAtt1"] > 1)
.Count());
Assert.AreEqual("SELECT COUNT(*) FROM `TestDomain1` WHERE `TestAtt1` > \"1\"", query);
}

[Test]
public void CountWithPredicate()
{
var query = GetQueryString (context =>
context.Domains ["TestDomain1"].Items
.Count (i => i["TestAtt1"] > 1));
Assert.AreEqual ("SELECT COUNT(*) FROM `TestDomain1` WHERE `TestAtt1` > \"1\"", query);
var query = GetQueryString(context =>
context.Domains["TestDomain1"].Items
.Count(i => i["TestAtt1"] > 1));
Assert.AreEqual("SELECT COUNT(*) FROM `TestDomain1` WHERE `TestAtt1` > \"1\"", query);
}

private string GetQueryString<T>(Func<ISimpleDbContext, T> query)
{
string output = null;
var captureService = new QueryOutputCaptureService(val => output = val);
using(var context = SimpleDbContext.Create(captureService))
using (var context = SimpleDbContext.Create(captureService))
{
if (typeof(IQueryable).IsAssignableFrom(typeof(T)))
if (typeof (IQueryable).IsAssignableFrom(typeof (T)))
{
foreach (var item in query(context) as IQueryable)
{
Expand All @@ -157,11 +157,10 @@ private string GetQueryString<T>(Func<ISimpleDbContext, T> query)
}
else
{
query (context);
query(context);
}
}
return output;
}
}
}

}
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
using System;
using System.Reflection;
using NUnit.Framework;
using System.Linq.Expressions;
using Cucumber.SimpleDb.Linq.Structure;
using Cucumber.SimpleDb.Linq.Translation;
using System.Linq.Expressions;
using Moq;
using NUnit.Framework;

namespace Cucumber.SimpleDb.Test
{
Expand All @@ -22,15 +20,15 @@ public void EnsureSourceExpressionIsUntouched()
}

[Test]
public void CreateDefaultProjector ()
public void CreateDefaultProjector()
{
var projectionExpression = SimpleDbExpression.Project(null, null);
var resultExpression = ClientProjectionWriter.Rewrite(projectionExpression);
Assert.IsNotNull(resultExpression);
Assert.IsInstanceOf<LambdaExpression>(resultExpression.Projector);
Assert.AreEqual(1, ((LambdaExpression)resultExpression.Projector).Parameters.Count);
Assert.AreEqual(typeof(ISimpleDbItem), ((LambdaExpression)resultExpression.Projector).Parameters[0].Type);
var projectorFunction = ((LambdaExpression)resultExpression.Projector).Compile();
Assert.AreEqual(1, ((LambdaExpression) resultExpression.Projector).Parameters.Count);
Assert.AreEqual(typeof (ISimpleDbItem), ((LambdaExpression) resultExpression.Projector).Parameters[0].Type);
var projectorFunction = ((LambdaExpression) resultExpression.Projector).Compile();
var inputItem = new Mock<ISimpleDbItem>().Object;
var projectionResult = projectorFunction.DynamicInvoke(inputItem);
Assert.AreSame(inputItem, projectionResult);
Expand All @@ -46,5 +44,4 @@ public void CreateTypedResultClientProjector()
{
}
}
}

}
Loading

0 comments on commit 96f7aa9

Please sign in to comment.