Skip to content

Commit

Permalink
DOC-2554 added code samples for set datatype in C# (#279)
Browse files Browse the repository at this point in the history
* DOC-2554 added code samples for set datatype

* DOC-2554 capitalised True and False in test text

* DOC-2554 fixed incorrect assert values

* DOC-2554 fixed cross slot errors with hashtags

* DOC-2554 fixed incorrect assert values

* DOC-2554 removed test that appeared to have inconsistent results

* DOC-2554 removed tests with inconsistent results
  • Loading branch information
andy-stark-redis committed Jun 14, 2024
1 parent 5689e5f commit 4b10eac
Showing 1 changed file with 199 additions and 0 deletions.
199 changes: 199 additions & 0 deletions tests/Doc/SetsTutorial.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
// EXAMPLE: sets_tutorial
// HIDE_START

using System.Data.Common;
using NRedisStack.Tests;
using StackExchange.Redis;

// HIDE_END

//REMOVE_START
namespace NRedisStack.Doc;
[Collection("DocsTests")]
//REMOVE_END

// HIDE_START
public class SetsExample
{

[SkipIfRedis(Is.OSSCluster)]
public void run()
{
var muxer = ConnectionMultiplexer.Connect("localhost:6379");
var db = muxer.GetDatabase();
//REMOVE_START
// Clear any keys here before using them in tests.
bool delRes = db.KeyDelete("bikes:racing:france");
delRes = db.KeyDelete("bikes:racing:usa");
//REMOVE_END
// HIDE_END


// STEP_START sadd
long res1 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1" });
Console.WriteLine(res1); // >>> 1

long res2 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1" });
Console.WriteLine(res2); // >>> 0

long res3 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:2", "bike:3" });
Console.WriteLine(res3); // >>> 2

long res4 = db.SetAdd("bikes:racing:usa", new RedisValue[] { "bike:1", "bike:4" });
Console.WriteLine(res4); // >>> 2
// STEP_END

// Tests for 'sadd' step.
// REMOVE_START
Assert.Equal(1, res1);
Assert.Equal(0, res2);
Assert.Equal(2, res3);
Assert.Equal(2, res4);
// REMOVE_END


// STEP_START sismember
bool res5 = db.SetContains("bikes:racing:france", "bike:1");
Console.WriteLine(res5); // >>> True

bool res6 = db.SetContains("bikes:racing:usa", "bike:2");
Console.WriteLine(res6); // >>> False
// STEP_END

// Tests for 'sismember' step.
// REMOVE_START
Assert.True(res5);
Assert.False(res6);
// REMOVE_END


// STEP_START sinter
long res7 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" });
long res8 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" });

RedisValue[] res9 = db.SetCombine(SetOperation.Intersect, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" });
Console.WriteLine(string.Join(", ", res9)); // >>> bike:1
// STEP_END

// Tests for 'sinter' step.
// REMOVE_START
Assert.Equal(3, res7);
Assert.Equal(2, res8);
Assert.Equal("bike:1", string.Join(", ", res9));
// REMOVE_END


// STEP_START scard
long res10 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" });
long res11 = db.SetLength("bikes:racing:france");
Console.WriteLine(res11); // >>> 3
// STEP_END

// Tests for 'scard' step.
// REMOVE_START
Assert.Equal(3, res11);
delRes = db.KeyDelete("bikes:racing:france");
// REMOVE_END


// STEP_START sadd_smembers
long res12 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" });
RedisValue[] res13 = db.SetMembers("bikes:racing:france");
Console.WriteLine(string.Join(", ", res13)); // >>> bike:3, bike:2, bike:1
// STEP_END

// Tests for 'sadd_smembers' step.
// REMOVE_START
Assert.Equal(3, res12);
// REMOVE_END


// STEP_START smismember
bool res14 = db.SetContains("bikes:racing:france", "bike:1");
Console.WriteLine(res14); // >>> true

bool[] res15 = db.SetContains("bikes:racing:france", new RedisValue[] { "bike:2", "bike:3", "bike:4" });
Console.WriteLine(string.Join(", ", res15)); // >>> True, True, False
// STEP_END

// Tests for 'smismember' step.
// REMOVE_START
Assert.True(res14);
Assert.Equal("True, True, False", string.Join(", ", res15));
// REMOVE_END


// STEP_START sdiff
long res16 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" });
long res17 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" });
RedisValue[] res18 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" });
Console.WriteLine(string.Join(", ", res18)); // >>> bike:2, bike:3
// STEP_END

// Tests for 'sdiff' step.
// REMOVE_START
Assert.Equal(0, res16);
Assert.Equal(0, res17);
// REMOVE_END


// STEP_START multisets
long res19 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" });
long res20 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" });
long res21 = db.SetAdd("{bikes:racing}:italy", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4" });

RedisValue[] res22 = db.SetCombine(SetOperation.Intersect, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" });
Console.WriteLine(string.Join(", ", res22)); // >>> bike:1

RedisValue[] res23 = db.SetCombine(SetOperation.Union, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" });
Console.WriteLine(string.Join(", ", res23)); // >>> bike:1, bike:2, bike:3, bike:4

RedisValue[] res24 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" });
Console.WriteLine(string.Join(", ", res24)); // >>> <empty set>

RedisValue[] res25 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:usa", "{bikes:racing}:france" });
Console.WriteLine(string.Join(", ", res25)); // >>> bike:4

RedisValue[] res26 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" });
Console.WriteLine(string.Join(", ", res26)); // >>> bike:2, bike:3
// STEP_END

// Tests for 'multisets' step.
// REMOVE_START
Assert.Equal(0, res19);
Assert.Equal(0, res20);
Assert.Equal(4, res21);
Assert.Equal("bike:1", string.Join(", ", res22));
Assert.Equal("", string.Join(", ", res24));
Assert.Equal("bike:4", string.Join(", ", res25));
// REMOVE_END


// STEP_START srem
long res27 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4", "bike:5" });

bool res28 = db.SetRemove("bikes:racing:france", "bike:1");
Console.WriteLine(res28); // >>> True

RedisValue res29 = db.SetPop("bikes:racing:france");
Console.WriteLine(res29); // >>> bike:3

RedisValue[] res30 = db.SetMembers("bikes:racing:france");
Console.WriteLine(string.Join(", ", res30)); // >>> bike:2, bike:4, bike:5

RedisValue res31 = db.SetRandomMember("bikes:racing:france");
Console.WriteLine(res31); // >>> bike:4
// STEP_END

// Tests for 'srem' step.
// REMOVE_START
Assert.Equal(2, res27);
Assert.True(res28);
// REMOVE_END


// HIDE_START
}
}
// HIDE_END

0 comments on commit 4b10eac

Please sign in to comment.