add params Line() constructor
continuous-integration/drone/push Build is failing Details

This commit is contained in:
Ben Harris 2020-05-06 10:39:59 -04:00
parent 7c482d8cd9
commit be7ffb0d5d
5 changed files with 26 additions and 44 deletions

View File

@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Threading;
using IrcTokens;
@ -26,8 +25,8 @@ namespace TokensSample
_socket.Connect("127.0.0.1", 6667);
while (!_socket.Connected) Thread.Sleep(1000);
Send(new Line {Command = "NICK", Params = new List<string> {"tokensbot"}});
Send(new Line {Command = "USER", Params = new List<string> {"tokensbot", "0", "*", "real name"}});
Send(new Line("NICK", "tokensbot"));
Send(new Line("USER", "tokensbot", "0", "*", "real name"));
while (true)
{
@ -50,16 +49,13 @@ namespace TokensSample
switch (line.Command)
{
case "PING":
Send(new Line {Command = "PONG", Params = line.Params});
Send(new Line("PONG", line.Params[0]));
break;
case "001":
Send(new Line {Command = "JOIN", Params = new List<string> {"#test"}});
Send(new Line("JOIN", "#test"));
break;
case "PRIVMSG":
Send(new Line
{
Command = "PRIVMSG", Params = new List<string> {line.Params[0], "hello there"}
});
Send(new Line("PRIVMSG", line.Params[0], "hello there"));
break;
}
}

View File

@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using IrcTokens;
namespace TokensSample
@ -14,7 +13,7 @@ namespace TokensSample
Console.WriteLine(line.Format());
// formatting
var line2 = new Line {Command = "USER", Params = new List<string> {"user", "0", "*", "real name"}};
var line2 = new Line("USER", "user", "0", "*", "real name");
Console.WriteLine(line2);
Console.WriteLine(line2.Format());

View File

@ -21,6 +21,12 @@ namespace IrcTokens
{
}
public Line(string command, params string[] parameters)
{
Command = command;
Params = parameters.ToList();
}
/// <summary>
/// Build new <see cref="Line" /> object parsed from
/// <param name="line">a string</param>

View File

@ -23,7 +23,7 @@ https://github.com/jesopo/irctokens)
### stateful
see the full example in [Examples/Tokens/Client.cs](Examples/Tokens/Client.cs)
see the full example in [Examples/Tokens/Client.cs](../Examples/Tokens/Client.cs)
public class Client
{

View File

@ -10,11 +10,9 @@ namespace IrcTokens.Tests
[TestMethod]
public void TestTags()
{
var line = new Line
var line = new Line("PRIVMSG", "#channel", "hello")
{
Command = "PRIVMSG",
Params = new List<string> {"#channel", "hello"},
Tags = new Dictionary<string, string> {{"id", "\\" + " " + ";" + "\r\n"}}
Tags = new Dictionary<string, string> {{"id", "\\" + " " + ";" + "\r\n"}}
}.Format();
Assert.AreEqual("@id=\\\\\\s\\:\\r\\n PRIVMSG #channel hello", line);
@ -23,7 +21,7 @@ namespace IrcTokens.Tests
[TestMethod]
public void TestMissingTag()
{
var line = new Line {Command = "PRIVMSG", Params = new List<string> {"#channel", "hello"}}.Format();
var line = new Line("PRIVMSG", "#channel", "hello").Format();
Assert.AreEqual("PRIVMSG #channel hello", line);
}
@ -31,12 +29,8 @@ namespace IrcTokens.Tests
[TestMethod]
public void TestNullTag()
{
var line = new Line
{
Command = "PRIVMSG",
Params = new List<string> {"#channel", "hello"},
Tags = new Dictionary<string, string> {{"a", null}}
}.Format();
var line = new Line("PRIVMSG", "#channel", "hello") {Tags = new Dictionary<string, string> {{"a", null}}}
.Format();
Assert.AreEqual("@a PRIVMSG #channel hello", line);
}
@ -44,12 +38,8 @@ namespace IrcTokens.Tests
[TestMethod]
public void TestEmptyTag()
{
var line = new Line
{
Command = "PRIVMSG",
Params = new List<string> {"#channel", "hello"},
Tags = new Dictionary<string, string> {{"a", ""}}
}.Format();
var line = new Line("PRIVMSG", "#channel", "hello") {Tags = new Dictionary<string, string> {{"a", ""}}}
.Format();
Assert.AreEqual("@a PRIVMSG #channel hello", line);
}
@ -57,10 +47,7 @@ namespace IrcTokens.Tests
[TestMethod]
public void TestSource()
{
var line = new Line
{
Command = "PRIVMSG", Params = new List<string> {"#channel", "hello"}, Source = "nick!user@host"
}.Format();
var line = new Line("PRIVMSG", "#channel", "hello") {Source = "nick!user@host"}.Format();
Assert.AreEqual(":nick!user@host PRIVMSG #channel hello", line);
}
@ -82,7 +69,7 @@ namespace IrcTokens.Tests
[TestMethod]
public void TestTrailingSpace()
{
var line = new Line {Command = "PRIVMSG", Params = new List<string> {"#channel", "hello world"}}.Format();
var line = new Line("PRIVMSG", "#channel", "hello world").Format();
Assert.AreEqual("PRIVMSG #channel :hello world", line);
}
@ -90,7 +77,7 @@ namespace IrcTokens.Tests
[TestMethod]
public void TestTrailingNoSpace()
{
var line = new Line {Command = "PRIVMSG", Params = new List<string> {"#channel", "helloworld"}}.Format();
var line = new Line("PRIVMSG", "#channel", "helloworld").Format();
Assert.AreEqual("PRIVMSG #channel helloworld", line);
}
@ -98,7 +85,7 @@ namespace IrcTokens.Tests
[TestMethod]
public void TestTrailingDoubleColon()
{
var line = new Line {Command = "PRIVMSG", Params = new List<string> {"#channel", ":helloworld"}}.Format();
var line = new Line("PRIVMSG", "#channel", ":helloworld").Format();
Assert.AreEqual("PRIVMSG #channel ::helloworld", line);
}
@ -106,19 +93,13 @@ namespace IrcTokens.Tests
[TestMethod]
public void TestInvalidNonLastSpace()
{
Assert.ThrowsException<ArgumentException>(() =>
{
new Line {Command = "USER", Params = new List<string> {"user", "0 *", "real name"}}.Format();
});
Assert.ThrowsException<ArgumentException>(() => { new Line("USER", "user", "0 *", "real name").Format(); });
}
[TestMethod]
public void TestInvalidNonLastColon()
{
Assert.ThrowsException<ArgumentException>(() =>
{
new Line {Command = "PRIVMSG", Params = new List<string> {":#channel", "hello"}}.Format();
});
Assert.ThrowsException<ArgumentException>(() => { new Line("PRIVMSG", ":#channel", "hello").Format(); });
}
}
}