Skip to content

Commit 4b10eac

Browse files
DOC-2554 added code samples for set datatype in C# (#279)
* 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
1 parent 5689e5f commit 4b10eac

File tree

1 file changed

+199
-0
lines changed

1 file changed

+199
-0
lines changed

tests/Doc/SetsTutorial.cs

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
// EXAMPLE: sets_tutorial
2+
// HIDE_START
3+
4+
using System.Data.Common;
5+
using NRedisStack.Tests;
6+
using StackExchange.Redis;
7+
8+
// HIDE_END
9+
10+
//REMOVE_START
11+
namespace NRedisStack.Doc;
12+
[Collection("DocsTests")]
13+
//REMOVE_END
14+
15+
// HIDE_START
16+
public class SetsExample
17+
{
18+
19+
[SkipIfRedis(Is.OSSCluster)]
20+
public void run()
21+
{
22+
var muxer = ConnectionMultiplexer.Connect("localhost:6379");
23+
var db = muxer.GetDatabase();
24+
//REMOVE_START
25+
// Clear any keys here before using them in tests.
26+
bool delRes = db.KeyDelete("bikes:racing:france");
27+
delRes = db.KeyDelete("bikes:racing:usa");
28+
//REMOVE_END
29+
// HIDE_END
30+
31+
32+
// STEP_START sadd
33+
long res1 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1" });
34+
Console.WriteLine(res1); // >>> 1
35+
36+
long res2 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1" });
37+
Console.WriteLine(res2); // >>> 0
38+
39+
long res3 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:2", "bike:3" });
40+
Console.WriteLine(res3); // >>> 2
41+
42+
long res4 = db.SetAdd("bikes:racing:usa", new RedisValue[] { "bike:1", "bike:4" });
43+
Console.WriteLine(res4); // >>> 2
44+
// STEP_END
45+
46+
// Tests for 'sadd' step.
47+
// REMOVE_START
48+
Assert.Equal(1, res1);
49+
Assert.Equal(0, res2);
50+
Assert.Equal(2, res3);
51+
Assert.Equal(2, res4);
52+
// REMOVE_END
53+
54+
55+
// STEP_START sismember
56+
bool res5 = db.SetContains("bikes:racing:france", "bike:1");
57+
Console.WriteLine(res5); // >>> True
58+
59+
bool res6 = db.SetContains("bikes:racing:usa", "bike:2");
60+
Console.WriteLine(res6); // >>> False
61+
// STEP_END
62+
63+
// Tests for 'sismember' step.
64+
// REMOVE_START
65+
Assert.True(res5);
66+
Assert.False(res6);
67+
// REMOVE_END
68+
69+
70+
// STEP_START sinter
71+
long res7 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" });
72+
long res8 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" });
73+
74+
RedisValue[] res9 = db.SetCombine(SetOperation.Intersect, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" });
75+
Console.WriteLine(string.Join(", ", res9)); // >>> bike:1
76+
// STEP_END
77+
78+
// Tests for 'sinter' step.
79+
// REMOVE_START
80+
Assert.Equal(3, res7);
81+
Assert.Equal(2, res8);
82+
Assert.Equal("bike:1", string.Join(", ", res9));
83+
// REMOVE_END
84+
85+
86+
// STEP_START scard
87+
long res10 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" });
88+
long res11 = db.SetLength("bikes:racing:france");
89+
Console.WriteLine(res11); // >>> 3
90+
// STEP_END
91+
92+
// Tests for 'scard' step.
93+
// REMOVE_START
94+
Assert.Equal(3, res11);
95+
delRes = db.KeyDelete("bikes:racing:france");
96+
// REMOVE_END
97+
98+
99+
// STEP_START sadd_smembers
100+
long res12 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" });
101+
RedisValue[] res13 = db.SetMembers("bikes:racing:france");
102+
Console.WriteLine(string.Join(", ", res13)); // >>> bike:3, bike:2, bike:1
103+
// STEP_END
104+
105+
// Tests for 'sadd_smembers' step.
106+
// REMOVE_START
107+
Assert.Equal(3, res12);
108+
// REMOVE_END
109+
110+
111+
// STEP_START smismember
112+
bool res14 = db.SetContains("bikes:racing:france", "bike:1");
113+
Console.WriteLine(res14); // >>> true
114+
115+
bool[] res15 = db.SetContains("bikes:racing:france", new RedisValue[] { "bike:2", "bike:3", "bike:4" });
116+
Console.WriteLine(string.Join(", ", res15)); // >>> True, True, False
117+
// STEP_END
118+
119+
// Tests for 'smismember' step.
120+
// REMOVE_START
121+
Assert.True(res14);
122+
Assert.Equal("True, True, False", string.Join(", ", res15));
123+
// REMOVE_END
124+
125+
126+
// STEP_START sdiff
127+
long res16 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" });
128+
long res17 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" });
129+
RedisValue[] res18 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" });
130+
Console.WriteLine(string.Join(", ", res18)); // >>> bike:2, bike:3
131+
// STEP_END
132+
133+
// Tests for 'sdiff' step.
134+
// REMOVE_START
135+
Assert.Equal(0, res16);
136+
Assert.Equal(0, res17);
137+
// REMOVE_END
138+
139+
140+
// STEP_START multisets
141+
long res19 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" });
142+
long res20 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" });
143+
long res21 = db.SetAdd("{bikes:racing}:italy", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4" });
144+
145+
RedisValue[] res22 = db.SetCombine(SetOperation.Intersect, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" });
146+
Console.WriteLine(string.Join(", ", res22)); // >>> bike:1
147+
148+
RedisValue[] res23 = db.SetCombine(SetOperation.Union, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" });
149+
Console.WriteLine(string.Join(", ", res23)); // >>> bike:1, bike:2, bike:3, bike:4
150+
151+
RedisValue[] res24 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" });
152+
Console.WriteLine(string.Join(", ", res24)); // >>> <empty set>
153+
154+
RedisValue[] res25 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:usa", "{bikes:racing}:france" });
155+
Console.WriteLine(string.Join(", ", res25)); // >>> bike:4
156+
157+
RedisValue[] res26 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" });
158+
Console.WriteLine(string.Join(", ", res26)); // >>> bike:2, bike:3
159+
// STEP_END
160+
161+
// Tests for 'multisets' step.
162+
// REMOVE_START
163+
Assert.Equal(0, res19);
164+
Assert.Equal(0, res20);
165+
Assert.Equal(4, res21);
166+
Assert.Equal("bike:1", string.Join(", ", res22));
167+
Assert.Equal("", string.Join(", ", res24));
168+
Assert.Equal("bike:4", string.Join(", ", res25));
169+
// REMOVE_END
170+
171+
172+
// STEP_START srem
173+
long res27 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4", "bike:5" });
174+
175+
bool res28 = db.SetRemove("bikes:racing:france", "bike:1");
176+
Console.WriteLine(res28); // >>> True
177+
178+
RedisValue res29 = db.SetPop("bikes:racing:france");
179+
Console.WriteLine(res29); // >>> bike:3
180+
181+
RedisValue[] res30 = db.SetMembers("bikes:racing:france");
182+
Console.WriteLine(string.Join(", ", res30)); // >>> bike:2, bike:4, bike:5
183+
184+
RedisValue res31 = db.SetRandomMember("bikes:racing:france");
185+
Console.WriteLine(res31); // >>> bike:4
186+
// STEP_END
187+
188+
// Tests for 'srem' step.
189+
// REMOVE_START
190+
Assert.Equal(2, res27);
191+
Assert.True(res28);
192+
// REMOVE_END
193+
194+
195+
// HIDE_START
196+
}
197+
}
198+
// HIDE_END
199+

0 commit comments

Comments
 (0)