Skip to content

Commit

Permalink
Add failing test for #291
Browse files Browse the repository at this point in the history
  • Loading branch information
Oren Novotny committed Nov 2, 2016
1 parent 5a0f1e4 commit 888fa27
Showing 1 changed file with 86 additions and 0 deletions.
86 changes: 86 additions & 0 deletions Ix.NET/Source/Tests/AsyncTests.Multiple.cs
Expand Up @@ -891,6 +891,40 @@ public async Task Join10()
}


[Fact]
public void Join11()
{
var customers = new List<Customer>
{
new Customer {CustomerId = "ALFKI"},
new Customer {CustomerId = "ANANT"},
new Customer {CustomerId = "FISSA"}
};
var orders = new List<Order>
{
new Order { OrderId = 1, CustomerId = "ALFKI"},
new Order { OrderId = 2, CustomerId = "ALFKI"},
new Order { OrderId = 3, CustomerId = "ALFKI"},
new Order { OrderId = 4, CustomerId = "FISSA"},
new Order { OrderId = 5, CustomerId = "FISSA"},
new Order { OrderId = 6, CustomerId = "FISSA"},
};

var asyncResult = customers.ToAsyncEnumerable()
.Join(orders.ToAsyncEnumerable(), c => c.CustomerId, o => o.CustomerId,
(c, o) => new CustomerOrder { CustomerId = c.CustomerId, OrderId = o.OrderId });

var e = asyncResult.GetEnumerator();
HasNext(e, new CustomerOrder { CustomerId = "ALFKI", OrderId = 1 });
HasNext(e, new CustomerOrder { CustomerId = "ALFKI", OrderId = 2 });
HasNext(e, new CustomerOrder { CustomerId = "ALFKI", OrderId = 3 });
HasNext(e, new CustomerOrder { CustomerId = "FISSA", OrderId = 4 });
HasNext(e, new CustomerOrder { CustomerId = "FISSA", OrderId = 5 });
HasNext(e, new CustomerOrder { CustomerId = "FISSA", OrderId = 6 });
NoNext(e);
}


[Fact]
public void SelectManyMultiple_Null()
{
Expand All @@ -915,5 +949,57 @@ public void SelectManyMultiple1()
HasNext(e, 4);
NoNext(e);
}


public class Customer
{
public string CustomerId { get; set; }
}

public class Order
{
public int OrderId { get; set; }
public string CustomerId { get; set; }
}

public class CustomerOrder : IEquatable<CustomerOrder>
{
public bool Equals(CustomerOrder other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return OrderId == other.OrderId && string.Equals(CustomerId, other.CustomerId);
}

public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != this.GetType()) return false;
return Equals((CustomerOrder)obj);
}

public override int GetHashCode()
{
unchecked
{
return (OrderId * 397) ^ (CustomerId != null ? CustomerId.GetHashCode() : 0);
}
}

public static bool operator ==(CustomerOrder left, CustomerOrder right)
{
return Equals(left, right);
}

public static bool operator !=(CustomerOrder left, CustomerOrder right)
{
return !Equals(left, right);
}

public int OrderId { get; set; }
public string CustomerId { get; set; }
}

}
}

0 comments on commit 888fa27

Please sign in to comment.