use some new c# lang features
This commit is contained in:
parent
bebc1bc6f0
commit
44555c7971
|
@ -5,83 +5,68 @@ using System.Threading;
|
||||||
using IRCStates;
|
using IRCStates;
|
||||||
using IRCTokens;
|
using IRCTokens;
|
||||||
|
|
||||||
namespace States
|
namespace States;
|
||||||
|
|
||||||
|
internal class Client(string host, int port, string nick)
|
||||||
{
|
{
|
||||||
internal class Client
|
private readonly byte[] _bytes = new byte[1024];
|
||||||
|
private readonly StatefulEncoder _encoder = new();
|
||||||
|
private readonly Server _server = new("test");
|
||||||
|
private readonly Socket _socket = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||||
|
|
||||||
|
private void Send(string raw)
|
||||||
{
|
{
|
||||||
private readonly byte[] _bytes;
|
_encoder.Push(new(raw));
|
||||||
private readonly StatefulEncoder _encoder;
|
}
|
||||||
private readonly string _host;
|
|
||||||
private readonly string _nick;
|
|
||||||
private readonly int _port;
|
|
||||||
private readonly Server _server;
|
|
||||||
private readonly Socket _socket;
|
|
||||||
|
|
||||||
public Client(string host, int port, string nick)
|
public void Start()
|
||||||
|
{
|
||||||
|
_socket.Connect(host, port);
|
||||||
|
while (!_socket.Connected) Thread.Sleep(1000);
|
||||||
|
|
||||||
|
Send("USER test 0 * test");
|
||||||
|
Send($"NICK {nick}");
|
||||||
|
|
||||||
|
while (true)
|
||||||
{
|
{
|
||||||
_server = new Server("test");
|
while (_encoder.PendingBytes.Any())
|
||||||
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
|
||||||
_encoder = new StatefulEncoder();
|
|
||||||
_host = host;
|
|
||||||
_port = port;
|
|
||||||
_nick = nick;
|
|
||||||
_bytes = new byte[1024];
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Send(string raw)
|
|
||||||
{
|
|
||||||
_encoder.Push(new Line(raw));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Start()
|
|
||||||
{
|
|
||||||
_socket.Connect(_host, _port);
|
|
||||||
while (!_socket.Connected) Thread.Sleep(1000);
|
|
||||||
|
|
||||||
Send("USER test 0 * test");
|
|
||||||
Send($"NICK {_nick}");
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
{
|
||||||
while (_encoder.PendingBytes.Any())
|
foreach (var line in _encoder.Pop(_socket.Send(_encoder.PendingBytes)))
|
||||||
{
|
Console.WriteLine($"> {line.Format()}");
|
||||||
foreach (var line in _encoder.Pop(_socket.Send(_encoder.PendingBytes)))
|
}
|
||||||
Console.WriteLine($"> {line.Format()}");
|
|
||||||
}
|
|
||||||
|
|
||||||
var bytesReceived = _socket.Receive(_bytes);
|
var bytesReceived = _socket.Receive(_bytes);
|
||||||
if (bytesReceived == 0)
|
if (bytesReceived == 0)
|
||||||
{
|
{
|
||||||
Console.WriteLine("! disconnected");
|
Console.WriteLine("! disconnected");
|
||||||
_socket.Shutdown(SocketShutdown.Both);
|
_socket.Shutdown(SocketShutdown.Both);
|
||||||
_socket.Close();
|
_socket.Close();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
var receivedLines = _server.Receive(_bytes, bytesReceived);
|
var receivedLines = _server.Receive(_bytes, bytesReceived);
|
||||||
foreach (var (line, _) in receivedLines)
|
foreach (var (line, _) in receivedLines)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"< {line.Format()}");
|
Console.WriteLine($"< {line.Format()}");
|
||||||
|
|
||||||
switch (line.Command)
|
switch (line.Command)
|
||||||
{
|
{
|
||||||
case Commands.Privmsg:
|
case Commands.Privmsg:
|
||||||
if (line.Params[1].Contains(_server.NickName))
|
if (line.Params[1].Contains(_server.NickName))
|
||||||
Send($"PRIVMSG {line.Params[0]} :hi {line.Hostmask.NickName}!");
|
Send($"PRIVMSG {line.Params[0]} :hi {line.Hostmask.NickName}!");
|
||||||
break;
|
break;
|
||||||
case "PING":
|
case "PING":
|
||||||
Send($"PONG :{line.Params[0]}");
|
Send($"PONG :{line.Params[0]}");
|
||||||
break;
|
break;
|
||||||
case Numeric.RPL_WELCOME:
|
case Numeric.RPL_WELCOME:
|
||||||
if (!_server.HasChannel("#irctokens")) Send("JOIN #irctokens");
|
if (!_server.HasChannel("#irctokens")) Send("JOIN #irctokens");
|
||||||
break;
|
break;
|
||||||
case "INVITE":
|
case "INVITE":
|
||||||
var c = line.Params[1];
|
var c = line.Params[1];
|
||||||
if (!_server.HasChannel(c)) Send($"JOIN {c}");
|
if (!_server.HasChannel(c)) Send($"JOIN {c}");
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,11 +1,4 @@
|
||||||
namespace States
|
using States;
|
||||||
{
|
|
||||||
public static class Program
|
var client = new Client("localhost", 6667, "statesbot");
|
||||||
{
|
client.Start();
|
||||||
private static void Main(string[] args)
|
|
||||||
{
|
|
||||||
var client = new Client("localhost", 6667, "statesbot");
|
|
||||||
client.Start();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -3,71 +3,62 @@ using System.Net.Sockets;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using IRCTokens;
|
using IRCTokens;
|
||||||
|
|
||||||
namespace Tokens
|
namespace Tokens;
|
||||||
|
|
||||||
|
public class Client
|
||||||
{
|
{
|
||||||
public class Client
|
private readonly byte[] _bytes = new byte[1024];
|
||||||
|
private readonly StatefulDecoder _decoder = new();
|
||||||
|
private readonly StatefulEncoder _encoder = new();
|
||||||
|
private readonly Socket _socket = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
|
||||||
|
|
||||||
|
public void Start()
|
||||||
{
|
{
|
||||||
private readonly byte[] _bytes;
|
_socket.Connect("127.0.0.1", 6667);
|
||||||
private readonly StatefulDecoder _decoder;
|
while (!_socket.Connected) Thread.Sleep(1000);
|
||||||
private readonly StatefulEncoder _encoder;
|
|
||||||
private readonly Socket _socket;
|
|
||||||
|
|
||||||
public Client()
|
Send(new("NICK", "tokensbot"));
|
||||||
|
Send(new("USER", "tokensbot", "0", "*", "real name"));
|
||||||
|
|
||||||
|
while (true)
|
||||||
{
|
{
|
||||||
_decoder = new StatefulDecoder();
|
var bytesReceived = _socket.Receive(_bytes);
|
||||||
_encoder = new StatefulEncoder();
|
|
||||||
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
|
|
||||||
_bytes = new byte[1024];
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Start()
|
if (bytesReceived == 0)
|
||||||
{
|
|
||||||
_socket.Connect("127.0.0.1", 6667);
|
|
||||||
while (!_socket.Connected) Thread.Sleep(1000);
|
|
||||||
|
|
||||||
Send(new Line("NICK", "tokensbot"));
|
|
||||||
Send(new Line("USER", "tokensbot", "0", "*", "real name"));
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
{
|
||||||
var bytesReceived = _socket.Receive(_bytes);
|
Console.WriteLine("! disconnected");
|
||||||
|
_socket.Shutdown(SocketShutdown.Both);
|
||||||
|
_socket.Close();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (bytesReceived == 0)
|
var lines = _decoder.Push(_bytes, bytesReceived);
|
||||||
|
|
||||||
|
foreach (var line in lines)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"< {line.Format()}");
|
||||||
|
|
||||||
|
switch (line.Command)
|
||||||
{
|
{
|
||||||
Console.WriteLine("! disconnected");
|
case "PING":
|
||||||
_socket.Shutdown(SocketShutdown.Both);
|
Send(new("PONG", line.Params[0]));
|
||||||
_socket.Close();
|
break;
|
||||||
break;
|
case "001":
|
||||||
}
|
Send(new("JOIN", "#irctokens"));
|
||||||
|
break;
|
||||||
var lines = _decoder.Push(_bytes, bytesReceived);
|
case "PRIVMSG":
|
||||||
|
Send(new("PRIVMSG", line.Params[0], "hello there"));
|
||||||
foreach (var line in lines)
|
break;
|
||||||
{
|
|
||||||
Console.WriteLine($"< {line.Format()}");
|
|
||||||
|
|
||||||
switch (line.Command)
|
|
||||||
{
|
|
||||||
case "PING":
|
|
||||||
Send(new Line("PONG", line.Params[0]));
|
|
||||||
break;
|
|
||||||
case "001":
|
|
||||||
Send(new Line("JOIN", "#irctokens"));
|
|
||||||
break;
|
|
||||||
case "PRIVMSG":
|
|
||||||
Send(new Line("PRIVMSG", line.Params[0], "hello there"));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Send(Line line)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"> {line.Format()}");
|
|
||||||
_encoder.Push(line);
|
|
||||||
while (_encoder.PendingBytes.Length > 0)
|
|
||||||
_encoder.Pop(_socket.Send(_encoder.PendingBytes, SocketFlags.None));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private void Send(Line line)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"> {line.Format()}");
|
||||||
|
_encoder.Push(line);
|
||||||
|
while (_encoder.PendingBytes.Length > 0)
|
||||||
|
_encoder.Pop(_socket.Send(_encoder.PendingBytes, SocketFlags.None));
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,25 +1,18 @@
|
||||||
using System;
|
// tokenization
|
||||||
|
|
||||||
|
using System;
|
||||||
using IRCTokens;
|
using IRCTokens;
|
||||||
|
using Tokens;
|
||||||
|
|
||||||
namespace Tokens
|
var line = new Line("@id=123 :ben!~ben@hostname PRIVMSG #channel :hello there!");
|
||||||
{
|
Console.WriteLine(line);
|
||||||
public class Program
|
Console.WriteLine(line.Format());
|
||||||
{
|
|
||||||
public static void Main(string[] args)
|
|
||||||
{
|
|
||||||
// tokenization
|
|
||||||
var line = new Line("@id=123 :ben!~ben@hostname PRIVMSG #channel :hello there!");
|
|
||||||
Console.WriteLine(line);
|
|
||||||
Console.WriteLine(line.Format());
|
|
||||||
|
|
||||||
// formatting
|
// formatting
|
||||||
var line2 = new Line("USER", "user", "0", "*", "real name");
|
var line2 = new Line("USER", "user", "0", "*", "real name");
|
||||||
Console.WriteLine(line2);
|
Console.WriteLine(line2);
|
||||||
Console.WriteLine(line2.Format());
|
Console.WriteLine(line2.Format());
|
||||||
|
|
||||||
// stateful example
|
// stateful example
|
||||||
var client = new Client();
|
var client = new Client();
|
||||||
client.Start();
|
client.Start();
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>netstandard2.1;net6.0</TargetFrameworks>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||||
<PackageReference Include="MSTest.TestAdapter" Version="2.2.8" />
|
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
|
||||||
<PackageReference Include="MSTest.TestFramework" Version="2.2.8" />
|
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
|
||||||
<PackageReference Include="YamlDotNet" Version="11.2.1" />
|
<PackageReference Include="YamlDotNet" Version="13.7.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using IRCStates;
|
using IRCStates;
|
||||||
using IRCTokens;
|
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
namespace IRCSharp.Tests.State
|
namespace IRCSharp.Tests.State
|
||||||
|
@ -13,7 +12,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void TestInitialize()
|
public void TestInitialize()
|
||||||
{
|
{
|
||||||
_server = new Server("test");
|
_server = new("test");
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
@ -21,16 +20,16 @@ namespace IRCSharp.Tests.State
|
||||||
{
|
{
|
||||||
Assert.IsFalse(_server.HasCap);
|
Assert.IsFalse(_server.HasCap);
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps);
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps);
|
||||||
_server.Parse(new Line("CAP * LS :a b"));
|
_server.Parse(new("CAP * LS :a b"));
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}}, _server.AvailableCaps);
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}}, _server.AvailableCaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void LsTwoLines()
|
public void LsTwoLines()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("CAP * LS * :a b"));
|
_server.Parse(new("CAP * LS * :a b"));
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps);
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps);
|
||||||
_server.Parse(new Line("CAP * LS :c"));
|
_server.Parse(new("CAP * LS :c"));
|
||||||
Assert.IsTrue(_server.AvailableCaps.ContainsKey("a"));
|
Assert.IsTrue(_server.AvailableCaps.ContainsKey("a"));
|
||||||
Assert.IsTrue(_server.AvailableCaps.ContainsKey("b"));
|
Assert.IsTrue(_server.AvailableCaps.ContainsKey("b"));
|
||||||
Assert.IsTrue(_server.AvailableCaps.ContainsKey("c"));
|
Assert.IsTrue(_server.AvailableCaps.ContainsKey("c"));
|
||||||
|
@ -39,7 +38,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void LsValues()
|
public void LsValues()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("CAP * LS :a b= c=1"));
|
_server.Parse(new("CAP * LS :a b= c=1"));
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}, {"c", "1"}},
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}, {"c", "1"}},
|
||||||
_server.AvailableCaps);
|
_server.AvailableCaps);
|
||||||
}
|
}
|
||||||
|
@ -47,48 +46,48 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ACKOneLine()
|
public void ACKOneLine()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("CAP * LS :a b"));
|
_server.Parse(new("CAP * LS :a b"));
|
||||||
_server.Parse(new Line("CAP * ACK :a b"));
|
_server.Parse(new("CAP * ACK :a b"));
|
||||||
CollectionAssert.AreEqual(new List<string> {"a", "b"}, _server.AgreedCaps);
|
CollectionAssert.AreEqual(new List<string> {"a", "b"}, _server.AgreedCaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ACKTwoLines()
|
public void ACKTwoLines()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("CAP * LS :a b c"));
|
_server.Parse(new("CAP * LS :a b c"));
|
||||||
_server.Parse(new Line("CAP * ACK * :a b"));
|
_server.Parse(new("CAP * ACK * :a b"));
|
||||||
_server.Parse(new Line("CAP * ACK :c"));
|
_server.Parse(new("CAP * ACK :c"));
|
||||||
CollectionAssert.AreEqual(new List<string> {"a", "b", "c"}, _server.AgreedCaps);
|
CollectionAssert.AreEqual(new List<string> {"a", "b", "c"}, _server.AgreedCaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ACKNotLs()
|
public void ACKNotLs()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("CAP * LS a"));
|
_server.Parse(new("CAP * LS a"));
|
||||||
_server.Parse(new Line("CAP * ACK b"));
|
_server.Parse(new("CAP * ACK b"));
|
||||||
CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps);
|
CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void NewNoLs()
|
public void NewNoLs()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("CAP * NEW :a"));
|
_server.Parse(new("CAP * NEW :a"));
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}}, _server.AvailableCaps);
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}}, _server.AvailableCaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void NewOneLine()
|
public void NewOneLine()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("CAP * LS :a"));
|
_server.Parse(new("CAP * LS :a"));
|
||||||
_server.Parse(new Line("CAP * NEW :b"));
|
_server.Parse(new("CAP * NEW :b"));
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}}, _server.AvailableCaps);
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}}, _server.AvailableCaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void NewTwoLines()
|
public void NewTwoLines()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("CAP * LS :a"));
|
_server.Parse(new("CAP * LS :a"));
|
||||||
_server.Parse(new Line("CAP * NEW :b c"));
|
_server.Parse(new("CAP * NEW :b c"));
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}, {"c", ""}},
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}, {"c", ""}},
|
||||||
_server.AvailableCaps);
|
_server.AvailableCaps);
|
||||||
}
|
}
|
||||||
|
@ -96,15 +95,15 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void DelNotAcked()
|
public void DelNotAcked()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("CAP * DEL a"));
|
_server.Parse(new("CAP * DEL a"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void DELOneLS()
|
public void DELOneLS()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("CAP * LS :a"));
|
_server.Parse(new("CAP * LS :a"));
|
||||||
_server.Parse(new Line("CAP * ACK :a"));
|
_server.Parse(new("CAP * ACK :a"));
|
||||||
_server.Parse(new Line("CAP * DEL :a"));
|
_server.Parse(new("CAP * DEL :a"));
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps);
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps);
|
||||||
CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps);
|
CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps);
|
||||||
}
|
}
|
||||||
|
@ -112,9 +111,9 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void DelTwoLs()
|
public void DelTwoLs()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("CAP * LS :a b"));
|
_server.Parse(new("CAP * LS :a b"));
|
||||||
_server.Parse(new Line("CAP * ACK :a b"));
|
_server.Parse(new("CAP * ACK :a b"));
|
||||||
_server.Parse(new Line("CAP * DEL :a"));
|
_server.Parse(new("CAP * DEL :a"));
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string> {{"b", ""}}, _server.AvailableCaps);
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"b", ""}}, _server.AvailableCaps);
|
||||||
CollectionAssert.AreEqual(new List<string> {"b"}, _server.AgreedCaps);
|
CollectionAssert.AreEqual(new List<string> {"b"}, _server.AgreedCaps);
|
||||||
}
|
}
|
||||||
|
@ -122,9 +121,9 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void DelTwoDel()
|
public void DelTwoDel()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("CAP * LS :a b"));
|
_server.Parse(new("CAP * LS :a b"));
|
||||||
_server.Parse(new Line("CAP * ACK :a b"));
|
_server.Parse(new("CAP * ACK :a b"));
|
||||||
_server.Parse(new Line("CAP * DEL :a b"));
|
_server.Parse(new("CAP * DEL :a b"));
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps);
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps);
|
||||||
CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps);
|
CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using IRCStates;
|
using IRCStates;
|
||||||
using IRCTokens;
|
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
namespace IRCSharp.Tests.State
|
namespace IRCSharp.Tests.State
|
||||||
|
@ -25,9 +24,9 @@ namespace IRCSharp.Tests.State
|
||||||
public void CommandJoin()
|
public void CommandJoin()
|
||||||
{
|
{
|
||||||
var server = new Server("test");
|
var server = new Server("test");
|
||||||
server.Parse(new Line("001 nickname"));
|
server.Parse(new("001 nickname"));
|
||||||
server.Parse(new Line(":Nickname JOIN #Chan"));
|
server.Parse(new(":Nickname JOIN #Chan"));
|
||||||
server.Parse(new Line(":Other JOIN #Chan"));
|
server.Parse(new(":Other JOIN #Chan"));
|
||||||
|
|
||||||
Assert.IsTrue(server.Users.ContainsKey("nickname"));
|
Assert.IsTrue(server.Users.ContainsKey("nickname"));
|
||||||
Assert.IsFalse(server.Users.ContainsKey("Nickname"));
|
Assert.IsFalse(server.Users.ContainsKey("Nickname"));
|
||||||
|
@ -44,10 +43,10 @@ namespace IRCSharp.Tests.State
|
||||||
public void CommandNick()
|
public void CommandNick()
|
||||||
{
|
{
|
||||||
var server = new Server("test");
|
var server = new Server("test");
|
||||||
server.Parse(new Line("001 nickname"));
|
server.Parse(new("001 nickname"));
|
||||||
server.Parse(new Line(":nickname JOIN #chan"));
|
server.Parse(new(":nickname JOIN #chan"));
|
||||||
var user = server.Users["nickname"];
|
var user = server.Users["nickname"];
|
||||||
server.Parse(new Line(":nickname NICK NewNickname"));
|
server.Parse(new(":nickname NICK NewNickname"));
|
||||||
Assert.AreEqual(1, server.Users.Count);
|
Assert.AreEqual(1, server.Users.Count);
|
||||||
Assert.IsTrue(server.Users.ContainsKey("newnickname"));
|
Assert.IsTrue(server.Users.ContainsKey("newnickname"));
|
||||||
Assert.AreEqual("NewNickname", user.NickName);
|
Assert.AreEqual("NewNickname", user.NickName);
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using IRCStates;
|
using IRCStates;
|
||||||
using IRCTokens;
|
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
namespace IRCSharp.Tests.State
|
namespace IRCSharp.Tests.State
|
||||||
|
@ -15,9 +14,9 @@ namespace IRCSharp.Tests.State
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void TestInitialize()
|
public void TestInitialize()
|
||||||
{
|
{
|
||||||
_server = new Server("test");
|
_server = new("test");
|
||||||
_server.Parse(new Line("001 nickname"));
|
_server.Parse(new("001 nickname"));
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
@ -37,7 +36,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void JoinOther()
|
public void JoinOther()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
|
|
||||||
Assert.AreEqual(2, _server.Users.Count);
|
Assert.AreEqual(2, _server.Users.Count);
|
||||||
Assert.IsTrue(_server.Users.ContainsKey("other"));
|
Assert.IsTrue(_server.Users.ContainsKey("other"));
|
||||||
|
@ -52,7 +51,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void PartSelf()
|
public void PartSelf()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname PART #chan"));
|
_server.Parse(new(":nickname PART #chan"));
|
||||||
|
|
||||||
Assert.AreEqual(0, _server.Users.Count);
|
Assert.AreEqual(0, _server.Users.Count);
|
||||||
Assert.AreEqual(0, _server.Channels.Count);
|
Assert.AreEqual(0, _server.Channels.Count);
|
||||||
|
@ -61,8 +60,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void PartOther()
|
public void PartOther()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
_server.Parse(new Line(":other PART #chan"));
|
_server.Parse(new(":other PART #chan"));
|
||||||
|
|
||||||
var user = _server.Users["nickname"];
|
var user = _server.Users["nickname"];
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
|
@ -77,7 +76,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void KickSelf()
|
public void KickSelf()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname KICK #chan nickname"));
|
_server.Parse(new(":nickname KICK #chan nickname"));
|
||||||
|
|
||||||
Assert.AreEqual(0, _server.Users.Count);
|
Assert.AreEqual(0, _server.Users.Count);
|
||||||
Assert.AreEqual(0, _server.Channels.Count);
|
Assert.AreEqual(0, _server.Channels.Count);
|
||||||
|
@ -86,8 +85,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void KickOther()
|
public void KickOther()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
_server.Parse(new Line(":nickname KICK #chan other"));
|
_server.Parse(new(":nickname KICK #chan other"));
|
||||||
|
|
||||||
var user = _server.Users["nickname"];
|
var user = _server.Users["nickname"];
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
|
@ -103,7 +102,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void QuitSelf()
|
public void QuitSelf()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("QUIT :i'm outta here"));
|
_server.Parse(new("QUIT :i'm outta here"));
|
||||||
Assert.IsFalse(_server.Users.Any());
|
Assert.IsFalse(_server.Users.Any());
|
||||||
Assert.IsFalse(_server.Channels.Any());
|
Assert.IsFalse(_server.Channels.Any());
|
||||||
}
|
}
|
||||||
|
@ -111,7 +110,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void QuitSelfWithSource()
|
public void QuitSelfWithSource()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname QUIT :i'm outta here"));
|
_server.Parse(new(":nickname QUIT :i'm outta here"));
|
||||||
Assert.IsFalse(_server.Users.Any());
|
Assert.IsFalse(_server.Users.Any());
|
||||||
Assert.IsFalse(_server.Channels.Any());
|
Assert.IsFalse(_server.Channels.Any());
|
||||||
}
|
}
|
||||||
|
@ -119,15 +118,15 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void QuitOther()
|
public void QuitOther()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
_server.Parse(new Line(":other QUIT :see ya"));
|
_server.Parse(new(":other QUIT :see ya"));
|
||||||
Assert.IsFalse(_server.Users.ContainsKey("other"));
|
Assert.IsFalse(_server.Users.ContainsKey("other"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void TopicText()
|
public void TopicText()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("332 * #chan :test"));
|
_server.Parse(new("332 * #chan :test"));
|
||||||
Assert.AreEqual("test", _server.Channels["#chan"].Topic);
|
Assert.AreEqual("test", _server.Channels["#chan"].Topic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,7 +134,7 @@ namespace IRCSharp.Tests.State
|
||||||
public void TopicSetByAt()
|
public void TopicSetByAt()
|
||||||
{
|
{
|
||||||
var dt = DateTimeOffset.FromUnixTimeSeconds(1584023277).DateTime;
|
var dt = DateTimeOffset.FromUnixTimeSeconds(1584023277).DateTime;
|
||||||
_server.Parse(new Line("333 * #chan other 1584023277"));
|
_server.Parse(new("333 * #chan other 1584023277"));
|
||||||
|
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
|
|
||||||
|
@ -146,21 +145,21 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void TopicCommand()
|
public void TopicCommand()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("TOPIC #chan :hello there"));
|
_server.Parse(new("TOPIC #chan :hello there"));
|
||||||
Assert.AreEqual("hello there", _server.Channels["#chan"].Topic);
|
Assert.AreEqual("hello there", _server.Channels["#chan"].Topic);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void CreationDate()
|
public void CreationDate()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("329 * #chan 1584041889"));
|
_server.Parse(new("329 * #chan 1584041889"));
|
||||||
Assert.AreEqual(DateTimeOffset.FromUnixTimeSeconds(1584041889).DateTime, _server.Channels["#chan"].Created);
|
Assert.AreEqual(DateTimeOffset.FromUnixTimeSeconds(1584041889).DateTime, _server.Channels["#chan"].Created);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void NamesCommand()
|
public void NamesCommand()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("353 * * #chan :nickname @+other"));
|
_server.Parse(new("353 * * #chan :nickname @+other"));
|
||||||
Assert.IsTrue(_server.Users.ContainsKey("nickname"));
|
Assert.IsTrue(_server.Users.ContainsKey("nickname"));
|
||||||
Assert.IsTrue(_server.Users.ContainsKey("other"));
|
Assert.IsTrue(_server.Users.ContainsKey("other"));
|
||||||
|
|
||||||
|
@ -179,7 +178,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void UserhostInNames()
|
public void UserhostInNames()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("353 * * #chan :nickname!user@host other!user2@host2"));
|
_server.Parse(new("353 * * #chan :nickname!user@host other!user2@host2"));
|
||||||
Assert.AreEqual("user", _server.UserName);
|
Assert.AreEqual("user", _server.UserName);
|
||||||
Assert.AreEqual("host", _server.HostName);
|
Assert.AreEqual("host", _server.HostName);
|
||||||
|
|
||||||
|
@ -194,7 +193,7 @@ namespace IRCSharp.Tests.State
|
||||||
var user = _server.Users["nickname"];
|
var user = _server.Users["nickname"];
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
var chanUser = channel.Users[user.NickNameLower];
|
var chanUser = channel.Users[user.NickNameLower];
|
||||||
_server.Parse(new Line(":nickname NICK nickname2"));
|
_server.Parse(new(":nickname NICK nickname2"));
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, ChannelUser> {{user.NickNameLower, chanUser}},
|
CollectionAssert.AreEqual(new Dictionary<string, ChannelUser> {{user.NickNameLower, chanUser}},
|
||||||
channel.Users);
|
channel.Users);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using IRCStates;
|
using IRCStates;
|
||||||
using IRCTokens;
|
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
namespace IRCSharp.Tests.State
|
namespace IRCSharp.Tests.State
|
||||||
|
@ -13,21 +12,21 @@ namespace IRCSharp.Tests.State
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void TestInitialize()
|
public void TestInitialize()
|
||||||
{
|
{
|
||||||
_server = new Server("test");
|
_server = new("test");
|
||||||
_server.Parse(new Line("001 nickname"));
|
_server.Parse(new("001 nickname"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void EmitJoin()
|
public void EmitJoin()
|
||||||
{
|
{
|
||||||
var emit = _server.Parse(new Line(":nickname JOIN #chan"));
|
var emit = _server.Parse(new(":nickname JOIN #chan"));
|
||||||
|
|
||||||
Assert.AreEqual("JOIN", emit.Command);
|
Assert.AreEqual("JOIN", emit.Command);
|
||||||
Assert.IsTrue(emit.Self);
|
Assert.IsTrue(emit.Self);
|
||||||
Assert.AreEqual(_server.Users["nickname"], emit.User);
|
Assert.AreEqual(_server.Users["nickname"], emit.User);
|
||||||
Assert.AreEqual(_server.Channels["#chan"], emit.Channel);
|
Assert.AreEqual(_server.Channels["#chan"], emit.Channel);
|
||||||
|
|
||||||
emit = _server.Parse(new Line(":other JOIN #chan"));
|
emit = _server.Parse(new(":other JOIN #chan"));
|
||||||
Assert.IsNotNull(emit);
|
Assert.IsNotNull(emit);
|
||||||
Assert.AreEqual("JOIN", emit.Command);
|
Assert.AreEqual("JOIN", emit.Command);
|
||||||
Assert.IsFalse(emit.Self);
|
Assert.IsFalse(emit.Self);
|
||||||
|
@ -38,8 +37,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void EmitPrivmsg()
|
public void EmitPrivmsg()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
var emit = _server.Parse(new Line(":nickname PRIVMSG #chan :hello"));
|
var emit = _server.Parse(new(":nickname PRIVMSG #chan :hello"));
|
||||||
|
|
||||||
Assert.IsNotNull(emit);
|
Assert.IsNotNull(emit);
|
||||||
Assert.AreEqual("PRIVMSG", emit.Command);
|
Assert.AreEqual("PRIVMSG", emit.Command);
|
||||||
|
@ -48,8 +47,8 @@ namespace IRCSharp.Tests.State
|
||||||
Assert.AreEqual(_server.Users["nickname"], emit.User);
|
Assert.AreEqual(_server.Users["nickname"], emit.User);
|
||||||
Assert.AreEqual(_server.Channels["#chan"], emit.Channel);
|
Assert.AreEqual(_server.Channels["#chan"], emit.Channel);
|
||||||
|
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
emit = _server.Parse(new Line(":other PRIVMSG #chan :hello2"));
|
emit = _server.Parse(new(":other PRIVMSG #chan :hello2"));
|
||||||
|
|
||||||
Assert.IsNotNull(emit);
|
Assert.IsNotNull(emit);
|
||||||
Assert.AreEqual("PRIVMSG", emit.Command);
|
Assert.AreEqual("PRIVMSG", emit.Command);
|
||||||
|
@ -62,8 +61,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void EmitPrivmsgNoJoin()
|
public void EmitPrivmsgNoJoin()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
var emit = _server.Parse(new Line(":other PRIVMSG #chan :hello"));
|
var emit = _server.Parse(new(":other PRIVMSG #chan :hello"));
|
||||||
|
|
||||||
Assert.IsNotNull(emit);
|
Assert.IsNotNull(emit);
|
||||||
Assert.AreEqual("PRIVMSG", emit.Command);
|
Assert.AreEqual("PRIVMSG", emit.Command);
|
||||||
|
@ -78,13 +77,13 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void EmitKick()
|
public void EmitKick()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
|
|
||||||
var user = _server.Users["nickname"];
|
var user = _server.Users["nickname"];
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
var userOther = _server.Users["other"];
|
var userOther = _server.Users["other"];
|
||||||
var emit = _server.Parse(new Line(":nickname KICK #chan other :reason"));
|
var emit = _server.Parse(new(":nickname KICK #chan other :reason"));
|
||||||
|
|
||||||
Assert.IsNotNull(emit);
|
Assert.IsNotNull(emit);
|
||||||
Assert.AreEqual("KICK", emit.Command);
|
Assert.AreEqual("KICK", emit.Command);
|
||||||
|
@ -98,7 +97,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void EmitMode()
|
public void EmitMode()
|
||||||
{
|
{
|
||||||
var emit = _server.Parse(new Line("MODE nickname x+i-i+wi-wi"));
|
var emit = _server.Parse(new("MODE nickname x+i-i+wi-wi"));
|
||||||
|
|
||||||
Assert.IsNotNull(emit);
|
Assert.IsNotNull(emit);
|
||||||
Assert.AreEqual("MODE", emit.Command);
|
Assert.AreEqual("MODE", emit.Command);
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using IRCStates;
|
using IRCStates;
|
||||||
using IRCTokens;
|
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
// ReSharper disable InconsistentNaming
|
// ReSharper disable InconsistentNaming
|
||||||
|
@ -15,8 +14,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void TestInitialize()
|
public void TestInitialize()
|
||||||
{
|
{
|
||||||
_server = new Server("test");
|
_server = new("test");
|
||||||
_server.Parse(new Line("001 nickname"));
|
_server.Parse(new("001 nickname"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
@ -35,7 +34,7 @@ namespace IRCSharp.Tests.State
|
||||||
"t"
|
"t"
|
||||||
}, _server.ISupport.ChanModes.SettingDModes);
|
}, _server.ISupport.ChanModes.SettingDModes);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * CHANMODES=a,b,c,d *"));
|
_server.Parse(new("005 * CHANMODES=a,b,c,d *"));
|
||||||
|
|
||||||
CollectionAssert.AreEqual(new List<string> {"a"}, _server.ISupport.ChanModes.ListModes);
|
CollectionAssert.AreEqual(new List<string> {"a"}, _server.ISupport.ChanModes.ListModes);
|
||||||
CollectionAssert.AreEqual(new List<string> {"b"}, _server.ISupport.ChanModes.SettingBModes);
|
CollectionAssert.AreEqual(new List<string> {"b"}, _server.ISupport.ChanModes.SettingBModes);
|
||||||
|
@ -54,7 +53,7 @@ namespace IRCSharp.Tests.State
|
||||||
Assert.AreEqual("o", _server.ISupport.Prefix.FromPrefix("@"));
|
Assert.AreEqual("o", _server.ISupport.Prefix.FromPrefix("@"));
|
||||||
Assert.IsNull(_server.ISupport.Prefix.FromPrefix("&"));
|
Assert.IsNull(_server.ISupport.Prefix.FromPrefix("&"));
|
||||||
|
|
||||||
_server.Parse(new Line("005 * PREFIX=(qaohv)~&@%+ *"));
|
_server.Parse(new("005 * PREFIX=(qaohv)~&@%+ *"));
|
||||||
CollectionAssert.AreEqual(new List<string>
|
CollectionAssert.AreEqual(new List<string>
|
||||||
{
|
{
|
||||||
"q",
|
"q",
|
||||||
|
@ -79,7 +78,7 @@ namespace IRCSharp.Tests.State
|
||||||
public void ChanTypes()
|
public void ChanTypes()
|
||||||
{
|
{
|
||||||
CollectionAssert.AreEqual(new List<string> {"#"}, _server.ISupport.ChanTypes);
|
CollectionAssert.AreEqual(new List<string> {"#"}, _server.ISupport.ChanTypes);
|
||||||
_server.Parse(new Line("005 * CHANTYPES=#& *"));
|
_server.Parse(new("005 * CHANTYPES=#& *"));
|
||||||
CollectionAssert.AreEqual(new List<string> {"#", "&"}, _server.ISupport.ChanTypes);
|
CollectionAssert.AreEqual(new List<string> {"#", "&"}, _server.ISupport.ChanTypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,10 +87,10 @@ namespace IRCSharp.Tests.State
|
||||||
{
|
{
|
||||||
Assert.AreEqual(3, _server.ISupport.Modes);
|
Assert.AreEqual(3, _server.ISupport.Modes);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * MODES *"));
|
_server.Parse(new("005 * MODES *"));
|
||||||
Assert.AreEqual(-1, _server.ISupport.Modes);
|
Assert.AreEqual(-1, _server.ISupport.Modes);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * MODES=5 *"));
|
_server.Parse(new("005 * MODES=5 *"));
|
||||||
Assert.AreEqual(5, _server.ISupport.Modes);
|
Assert.AreEqual(5, _server.ISupport.Modes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +98,7 @@ namespace IRCSharp.Tests.State
|
||||||
public void Rfc1459()
|
public void Rfc1459()
|
||||||
{
|
{
|
||||||
Assert.AreEqual(IRCStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping);
|
Assert.AreEqual(IRCStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping);
|
||||||
_server.Parse(new Line("005 * CASEMAPPING=rfc1459 *"));
|
_server.Parse(new("005 * CASEMAPPING=rfc1459 *"));
|
||||||
Assert.AreEqual(IRCStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping);
|
Assert.AreEqual(IRCStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping);
|
||||||
var lower = _server.CaseFold(@"ÀTEST[]~\");
|
var lower = _server.CaseFold(@"ÀTEST[]~\");
|
||||||
Assert.AreEqual("Àtest{}^|", lower);
|
Assert.AreEqual("Àtest{}^|", lower);
|
||||||
|
@ -108,7 +107,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Ascii()
|
public void Ascii()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("005 * CASEMAPPING=ascii *"));
|
_server.Parse(new("005 * CASEMAPPING=ascii *"));
|
||||||
Assert.AreEqual(IRCStates.Casemap.CaseMapping.Ascii, _server.ISupport.CaseMapping);
|
Assert.AreEqual(IRCStates.Casemap.CaseMapping.Ascii, _server.ISupport.CaseMapping);
|
||||||
var lower = _server.CaseFold(@"ÀTEST[]~\");
|
var lower = _server.CaseFold(@"ÀTEST[]~\");
|
||||||
Assert.AreEqual(@"Àtest[]~\", lower);
|
Assert.AreEqual(@"Àtest[]~\", lower);
|
||||||
|
@ -117,7 +116,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void FallbackToRfc1459()
|
public void FallbackToRfc1459()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("005 * CASEMAPPING=nonexistent *"));
|
_server.Parse(new("005 * CASEMAPPING=nonexistent *"));
|
||||||
Assert.AreEqual(IRCStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping);
|
Assert.AreEqual(IRCStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping);
|
||||||
var lower = _server.CaseFold(@"ÀTEST[]~\");
|
var lower = _server.CaseFold(@"ÀTEST[]~\");
|
||||||
Assert.AreEqual("Àtest{}^|", lower);
|
Assert.AreEqual("Àtest{}^|", lower);
|
||||||
|
@ -127,7 +126,7 @@ namespace IRCSharp.Tests.State
|
||||||
public void Network()
|
public void Network()
|
||||||
{
|
{
|
||||||
Assert.IsNull(_server.ISupport.Network);
|
Assert.IsNull(_server.ISupport.Network);
|
||||||
_server.Parse(new Line("005 * NETWORK=testnet *"));
|
_server.Parse(new("005 * NETWORK=testnet *"));
|
||||||
Assert.AreEqual("testnet", _server.ISupport.Network);
|
Assert.AreEqual("testnet", _server.ISupport.Network);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,7 +134,7 @@ namespace IRCSharp.Tests.State
|
||||||
public void StatusMsg()
|
public void StatusMsg()
|
||||||
{
|
{
|
||||||
CollectionAssert.AreEqual(new List<string>(), _server.ISupport.StatusMsg);
|
CollectionAssert.AreEqual(new List<string>(), _server.ISupport.StatusMsg);
|
||||||
_server.Parse(new Line("005 * STATUSMSG=&@ *"));
|
_server.Parse(new("005 * STATUSMSG=&@ *"));
|
||||||
CollectionAssert.AreEqual(new List<string> {"&", "@"}, _server.ISupport.StatusMsg);
|
CollectionAssert.AreEqual(new List<string> {"&", "@"}, _server.ISupport.StatusMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,10 +143,10 @@ namespace IRCSharp.Tests.State
|
||||||
{
|
{
|
||||||
Assert.IsNull(_server.ISupport.CallerId);
|
Assert.IsNull(_server.ISupport.CallerId);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * CALLERID=U *"));
|
_server.Parse(new("005 * CALLERID=U *"));
|
||||||
Assert.AreEqual("U", _server.ISupport.CallerId);
|
Assert.AreEqual("U", _server.ISupport.CallerId);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * CALLERID *"));
|
_server.Parse(new("005 * CALLERID *"));
|
||||||
Assert.AreEqual("g", _server.ISupport.CallerId);
|
Assert.AreEqual("g", _server.ISupport.CallerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,10 +155,10 @@ namespace IRCSharp.Tests.State
|
||||||
{
|
{
|
||||||
Assert.IsNull(_server.ISupport.Excepts);
|
Assert.IsNull(_server.ISupport.Excepts);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * EXCEPTS=U *"));
|
_server.Parse(new("005 * EXCEPTS=U *"));
|
||||||
Assert.AreEqual("U", _server.ISupport.Excepts);
|
Assert.AreEqual("U", _server.ISupport.Excepts);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * EXCEPTS *"));
|
_server.Parse(new("005 * EXCEPTS *"));
|
||||||
Assert.AreEqual("e", _server.ISupport.Excepts);
|
Assert.AreEqual("e", _server.ISupport.Excepts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,10 +167,10 @@ namespace IRCSharp.Tests.State
|
||||||
{
|
{
|
||||||
Assert.IsNull(_server.ISupport.Invex);
|
Assert.IsNull(_server.ISupport.Invex);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * INVEX=U *"));
|
_server.Parse(new("005 * INVEX=U *"));
|
||||||
Assert.AreEqual("U", _server.ISupport.Invex);
|
Assert.AreEqual("U", _server.ISupport.Invex);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * INVEX *"));
|
_server.Parse(new("005 * INVEX *"));
|
||||||
Assert.AreEqual("I", _server.ISupport.Invex);
|
Assert.AreEqual("I", _server.ISupport.Invex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,7 +179,7 @@ namespace IRCSharp.Tests.State
|
||||||
{
|
{
|
||||||
Assert.IsFalse(_server.ISupport.Whox);
|
Assert.IsFalse(_server.ISupport.Whox);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * WHOX *"));
|
_server.Parse(new("005 * WHOX *"));
|
||||||
Assert.IsTrue(_server.ISupport.Whox);
|
Assert.IsTrue(_server.ISupport.Whox);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,10 +188,10 @@ namespace IRCSharp.Tests.State
|
||||||
{
|
{
|
||||||
Assert.IsNull(_server.ISupport.Monitor);
|
Assert.IsNull(_server.ISupport.Monitor);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * MONITOR=123 *"));
|
_server.Parse(new("005 * MONITOR=123 *"));
|
||||||
Assert.AreEqual(123, _server.ISupport.Monitor);
|
Assert.AreEqual(123, _server.ISupport.Monitor);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * MONITOR *"));
|
_server.Parse(new("005 * MONITOR *"));
|
||||||
Assert.AreEqual(-1, _server.ISupport.Monitor);
|
Assert.AreEqual(-1, _server.ISupport.Monitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,10 +200,10 @@ namespace IRCSharp.Tests.State
|
||||||
{
|
{
|
||||||
Assert.IsNull(_server.ISupport.Watch);
|
Assert.IsNull(_server.ISupport.Watch);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * WATCH=123 *"));
|
_server.Parse(new("005 * WATCH=123 *"));
|
||||||
Assert.AreEqual(123, _server.ISupport.Watch);
|
Assert.AreEqual(123, _server.ISupport.Watch);
|
||||||
|
|
||||||
_server.Parse(new Line("005 * WATCH *"));
|
_server.Parse(new("005 * WATCH *"));
|
||||||
Assert.AreEqual(-1, _server.ISupport.Watch);
|
Assert.AreEqual(-1, _server.ISupport.Watch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using IRCStates;
|
using IRCStates;
|
||||||
using IRCTokens;
|
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
namespace IRCSharp.Tests.State
|
namespace IRCSharp.Tests.State
|
||||||
|
@ -13,30 +12,30 @@ namespace IRCSharp.Tests.State
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void TestInitialize()
|
public void TestInitialize()
|
||||||
{
|
{
|
||||||
_server = new Server("test");
|
_server = new("test");
|
||||||
_server.Parse(new Line("001 nickname"));
|
_server.Parse(new("001 nickname"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void UModeAdd()
|
public void UModeAdd()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("MODE nickname +i"));
|
_server.Parse(new("MODE nickname +i"));
|
||||||
CollectionAssert.AreEqual(new List<string> {"i"}, _server.Modes);
|
CollectionAssert.AreEqual(new List<string> {"i"}, _server.Modes);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void UModeRemove()
|
public void UModeRemove()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("MODE nickname +i"));
|
_server.Parse(new("MODE nickname +i"));
|
||||||
_server.Parse(new Line("MODE nickname -i"));
|
_server.Parse(new("MODE nickname -i"));
|
||||||
CollectionAssert.AreEqual(new List<string>(), _server.Modes);
|
CollectionAssert.AreEqual(new List<string>(), _server.Modes);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void PrefixAdd()
|
public void PrefixAdd()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("MODE #chan +ov nickname nickname"));
|
_server.Parse(new("MODE #chan +ov nickname nickname"));
|
||||||
|
|
||||||
var user = _server.Users["nickname"];
|
var user = _server.Users["nickname"];
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
|
@ -47,9 +46,9 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void PrefixRemove()
|
public void PrefixRemove()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("MODE #chan +ov nickname nickname"));
|
_server.Parse(new("MODE #chan +ov nickname nickname"));
|
||||||
_server.Parse(new Line("MODE #chan -ov nickname nickname"));
|
_server.Parse(new("MODE #chan -ov nickname nickname"));
|
||||||
|
|
||||||
var user = _server.Users["nickname"];
|
var user = _server.Users["nickname"];
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
|
@ -60,8 +59,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ChannelListAdd()
|
public void ChannelListAdd()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("MODE #chan +b asd!*@*"));
|
_server.Parse(new("MODE #chan +b asd!*@*"));
|
||||||
|
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
CollectionAssert.AreEqual(new List<string> {"asd!*@*"}, channel.ListModes["b"]);
|
CollectionAssert.AreEqual(new List<string> {"asd!*@*"}, channel.ListModes["b"]);
|
||||||
|
@ -70,9 +69,9 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ChannelListRemove()
|
public void ChannelListRemove()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("MODE #chan +b asd!*@*"));
|
_server.Parse(new("MODE #chan +b asd!*@*"));
|
||||||
_server.Parse(new Line("MODE #chan -b asd!*@*"));
|
_server.Parse(new("MODE #chan -b asd!*@*"));
|
||||||
|
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, List<string>>(), channel.ListModes);
|
CollectionAssert.AreEqual(new Dictionary<string, List<string>>(), channel.ListModes);
|
||||||
|
@ -81,8 +80,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ChannelTypeBAdd()
|
public void ChannelTypeBAdd()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("MODE #chan +k password"));
|
_server.Parse(new("MODE #chan +k password"));
|
||||||
|
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "password"}}, channel.Modes);
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "password"}}, channel.Modes);
|
||||||
|
@ -91,9 +90,9 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ChannelTypeBRemove()
|
public void ChannelTypeBRemove()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("MODE #chan +k password"));
|
_server.Parse(new("MODE #chan +k password"));
|
||||||
_server.Parse(new Line("MODE #chan -k *"));
|
_server.Parse(new("MODE #chan -k *"));
|
||||||
|
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
||||||
|
@ -102,8 +101,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ChannelTypeCAdd()
|
public void ChannelTypeCAdd()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("MODE #chan +l 100"));
|
_server.Parse(new("MODE #chan +l 100"));
|
||||||
|
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string> {{"l", "100"}}, channel.Modes);
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"l", "100"}}, channel.Modes);
|
||||||
|
@ -112,9 +111,9 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ChannelTypeCRemove()
|
public void ChannelTypeCRemove()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("MODE #chan +l 100"));
|
_server.Parse(new("MODE #chan +l 100"));
|
||||||
_server.Parse(new Line("MODE #chan -l"));
|
_server.Parse(new("MODE #chan -l"));
|
||||||
|
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
||||||
|
@ -123,8 +122,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ChannelTypeDAdd()
|
public void ChannelTypeDAdd()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("MODE #chan +i"));
|
_server.Parse(new("MODE #chan +i"));
|
||||||
|
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}}, channel.Modes);
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}}, channel.Modes);
|
||||||
|
@ -133,9 +132,9 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ChannelTypeDRemove()
|
public void ChannelTypeDRemove()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("MODE #chan +i"));
|
_server.Parse(new("MODE #chan +i"));
|
||||||
_server.Parse(new Line("MODE #chan -i"));
|
_server.Parse(new("MODE #chan -i"));
|
||||||
|
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
||||||
|
@ -144,8 +143,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ChannelNumeric()
|
public void ChannelNumeric()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("324 * #chan +bkli *!*@* pass 10"));
|
_server.Parse(new("324 * #chan +bkli *!*@* pass 10"));
|
||||||
|
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "pass"}, {"l", "10"}, {"i", null}},
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "pass"}, {"l", "10"}, {"i", null}},
|
||||||
|
@ -156,8 +155,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ChannelNumericWithoutPlus()
|
public void ChannelNumericWithoutPlus()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("324 * #chan il 10"));
|
_server.Parse(new("324 * #chan il 10"));
|
||||||
|
|
||||||
var channel = _server.Channels["#chan"];
|
var channel = _server.Channels["#chan"];
|
||||||
CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}, {"l", "10"}}, channel.Modes);
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}, {"l", "10"}}, channel.Modes);
|
||||||
|
@ -166,14 +165,14 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void UserNumeric()
|
public void UserNumeric()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("221 * +iw"));
|
_server.Parse(new("221 * +iw"));
|
||||||
CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
|
CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void UserNumericWithoutPlus()
|
public void UserNumericWithoutPlus()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("221 * iw"));
|
_server.Parse(new("221 * iw"));
|
||||||
CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
|
CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using IRCStates;
|
using IRCStates;
|
||||||
using IRCTokens;
|
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
namespace IRCSharp.Tests.State
|
namespace IRCSharp.Tests.State
|
||||||
|
@ -12,10 +11,10 @@ namespace IRCSharp.Tests.State
|
||||||
public void MessageOfTheDay()
|
public void MessageOfTheDay()
|
||||||
{
|
{
|
||||||
var server = new Server("test");
|
var server = new Server("test");
|
||||||
server.Parse(new Line("001 nickname"));
|
server.Parse(new("001 nickname"));
|
||||||
server.Parse(new Line("375 * :start of motd"));
|
server.Parse(new("375 * :start of motd"));
|
||||||
server.Parse(new Line("372 * :first line of motd"));
|
server.Parse(new("372 * :first line of motd"));
|
||||||
server.Parse(new Line("372 * :second line of motd"));
|
server.Parse(new("372 * :second line of motd"));
|
||||||
|
|
||||||
CollectionAssert.AreEqual(new List<string> {"start of motd", "first line of motd", "second line of motd"},
|
CollectionAssert.AreEqual(new List<string> {"start of motd", "first line of motd", "second line of motd"},
|
||||||
server.Motd);
|
server.Motd);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using IRCStates;
|
using IRCStates;
|
||||||
using IRCTokens;
|
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
namespace IRCSharp.Tests.State
|
namespace IRCSharp.Tests.State
|
||||||
|
@ -12,8 +11,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void TestInitialize()
|
public void TestInitialize()
|
||||||
{
|
{
|
||||||
_server = new Server("test");
|
_server = new("test");
|
||||||
_server.Parse(new Line("900 * nick!user@host account"));
|
_server.Parse(new("900 * nick!user@host account"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
@ -28,7 +27,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void LoggedOut()
|
public void LoggedOut()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("901 * nick1!user1@host1"));
|
_server.Parse(new("901 * nick1!user1@host1"));
|
||||||
|
|
||||||
Assert.AreEqual("nick1", _server.NickName);
|
Assert.AreEqual("nick1", _server.NickName);
|
||||||
Assert.AreEqual("user1", _server.UserName);
|
Assert.AreEqual("user1", _server.UserName);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using IRCStates;
|
using IRCStates;
|
||||||
using IRCTokens;
|
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
namespace IRCSharp.Tests.State
|
namespace IRCSharp.Tests.State
|
||||||
|
@ -12,8 +11,8 @@ namespace IRCSharp.Tests.State
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void TestInitialize()
|
public void TestInitialize()
|
||||||
{
|
{
|
||||||
_server = new Server("test");
|
_server = new("test");
|
||||||
_server.Parse(new Line("001 nickname"));
|
_server.Parse(new("001 nickname"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
@ -26,14 +25,14 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void NicknameChange()
|
public void NicknameChange()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname NICK nickname2"));
|
_server.Parse(new(":nickname NICK nickname2"));
|
||||||
Assert.AreEqual("nickname2", _server.NickName);
|
Assert.AreEqual("nickname2", _server.NickName);
|
||||||
|
|
||||||
_server.Parse(new Line(":nickname2 JOIN #chan"));
|
_server.Parse(new(":nickname2 JOIN #chan"));
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
Assert.IsTrue(_server.Users.ContainsKey("other"));
|
Assert.IsTrue(_server.Users.ContainsKey("other"));
|
||||||
|
|
||||||
_server.Parse(new Line(":other NICK other2"));
|
_server.Parse(new(":other NICK other2"));
|
||||||
Assert.IsFalse(_server.Users.ContainsKey("other"));
|
Assert.IsFalse(_server.Users.ContainsKey("other"));
|
||||||
Assert.IsTrue(_server.Users.ContainsKey("other2"));
|
Assert.IsTrue(_server.Users.ContainsKey("other2"));
|
||||||
}
|
}
|
||||||
|
@ -41,11 +40,11 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void HostmaskJoinBoth()
|
public void HostmaskJoinBoth()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname!user@host JOIN #chan"));
|
_server.Parse(new(":nickname!user@host JOIN #chan"));
|
||||||
Assert.AreEqual("user", _server.UserName);
|
Assert.AreEqual("user", _server.UserName);
|
||||||
Assert.AreEqual("host", _server.HostName);
|
Assert.AreEqual("host", _server.HostName);
|
||||||
|
|
||||||
_server.Parse(new Line(":other!user@host JOIN #chan"));
|
_server.Parse(new(":other!user@host JOIN #chan"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.AreEqual("user", user.UserName);
|
Assert.AreEqual("user", user.UserName);
|
||||||
Assert.AreEqual("host", user.HostName);
|
Assert.AreEqual("host", user.HostName);
|
||||||
|
@ -54,11 +53,11 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void HostmaskJoinUser()
|
public void HostmaskJoinUser()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname!user JOIN #chan"));
|
_server.Parse(new(":nickname!user JOIN #chan"));
|
||||||
Assert.AreEqual("user", _server.UserName);
|
Assert.AreEqual("user", _server.UserName);
|
||||||
Assert.IsNull(_server.HostName);
|
Assert.IsNull(_server.HostName);
|
||||||
|
|
||||||
_server.Parse(new Line(":other!user JOIN #chan"));
|
_server.Parse(new(":other!user JOIN #chan"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.AreEqual("user", user.UserName);
|
Assert.AreEqual("user", user.UserName);
|
||||||
Assert.IsNull(user.HostName);
|
Assert.IsNull(user.HostName);
|
||||||
|
@ -67,11 +66,11 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void HostmaskJoinHost()
|
public void HostmaskJoinHost()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname@host JOIN #chan"));
|
_server.Parse(new(":nickname@host JOIN #chan"));
|
||||||
Assert.IsNull(_server.UserName);
|
Assert.IsNull(_server.UserName);
|
||||||
Assert.AreEqual("host", _server.HostName);
|
Assert.AreEqual("host", _server.HostName);
|
||||||
|
|
||||||
_server.Parse(new Line(":other@host JOIN #chan"));
|
_server.Parse(new(":other@host JOIN #chan"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.IsNull(user.UserName);
|
Assert.IsNull(user.UserName);
|
||||||
Assert.AreEqual("host", user.HostName);
|
Assert.AreEqual("host", user.HostName);
|
||||||
|
@ -80,11 +79,11 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ExtendedJoinWithoutExtendedJoin()
|
public void ExtendedJoinWithoutExtendedJoin()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
Assert.IsNull(_server.Account);
|
Assert.IsNull(_server.Account);
|
||||||
Assert.IsNull(_server.RealName);
|
Assert.IsNull(_server.RealName);
|
||||||
|
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.IsNull(user.Account);
|
Assert.IsNull(user.Account);
|
||||||
Assert.IsNull(user.RealName);
|
Assert.IsNull(user.RealName);
|
||||||
|
@ -93,11 +92,11 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ExtendedJoinWithAccount()
|
public void ExtendedJoinWithAccount()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan acc :realname"));
|
_server.Parse(new(":nickname JOIN #chan acc :realname"));
|
||||||
Assert.AreEqual("acc", _server.Account);
|
Assert.AreEqual("acc", _server.Account);
|
||||||
Assert.AreEqual("realname", _server.RealName);
|
Assert.AreEqual("realname", _server.RealName);
|
||||||
|
|
||||||
_server.Parse(new Line(":other JOIN #chan acc2 :realname2"));
|
_server.Parse(new(":other JOIN #chan acc2 :realname2"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.AreEqual("acc2", user.Account);
|
Assert.AreEqual("acc2", user.Account);
|
||||||
Assert.AreEqual("realname2", user.RealName);
|
Assert.AreEqual("realname2", user.RealName);
|
||||||
|
@ -106,11 +105,11 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ExtendedJoinWithoutAccount()
|
public void ExtendedJoinWithoutAccount()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan * :realname"));
|
_server.Parse(new(":nickname JOIN #chan * :realname"));
|
||||||
Assert.AreEqual("", _server.Account);
|
Assert.AreEqual("", _server.Account);
|
||||||
Assert.AreEqual("realname", _server.RealName);
|
Assert.AreEqual("realname", _server.RealName);
|
||||||
|
|
||||||
_server.Parse(new Line(":other JOIN #chan * :realname2"));
|
_server.Parse(new(":other JOIN #chan * :realname2"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.AreEqual("", user.Account);
|
Assert.AreEqual("", user.Account);
|
||||||
Assert.AreEqual("realname2", user.RealName);
|
Assert.AreEqual("realname2", user.RealName);
|
||||||
|
@ -119,12 +118,12 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void AccountNotifyWithAccount()
|
public void AccountNotifyWithAccount()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line(":nickname ACCOUNT acc"));
|
_server.Parse(new(":nickname ACCOUNT acc"));
|
||||||
Assert.AreEqual("acc", _server.Account);
|
Assert.AreEqual("acc", _server.Account);
|
||||||
|
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
_server.Parse(new Line(":other ACCOUNT acc2"));
|
_server.Parse(new(":other ACCOUNT acc2"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.AreEqual("acc2", user.Account);
|
Assert.AreEqual("acc2", user.Account);
|
||||||
}
|
}
|
||||||
|
@ -132,12 +131,12 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void AccountNotifyWithoutAccount()
|
public void AccountNotifyWithoutAccount()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line(":nickname ACCOUNT *"));
|
_server.Parse(new(":nickname ACCOUNT *"));
|
||||||
Assert.AreEqual("", _server.Account);
|
Assert.AreEqual("", _server.Account);
|
||||||
|
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
_server.Parse(new Line(":other ACCOUNT *"));
|
_server.Parse(new(":other ACCOUNT *"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.AreEqual("", user.Account);
|
Assert.AreEqual("", user.Account);
|
||||||
}
|
}
|
||||||
|
@ -145,12 +144,12 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void HostmaskPrivmsgBoth()
|
public void HostmaskPrivmsgBoth()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line(":nickname!user@host PRIVMSG #chan :hi"));
|
_server.Parse(new(":nickname!user@host PRIVMSG #chan :hi"));
|
||||||
Assert.AreEqual("user", _server.UserName);
|
Assert.AreEqual("user", _server.UserName);
|
||||||
Assert.AreEqual("host", _server.HostName);
|
Assert.AreEqual("host", _server.HostName);
|
||||||
|
|
||||||
_server.Parse(new Line(":other!user@host PRIVMSG #chan :hi"));
|
_server.Parse(new(":other!user@host PRIVMSG #chan :hi"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.AreEqual("user", user.UserName);
|
Assert.AreEqual("user", user.UserName);
|
||||||
Assert.AreEqual("host", user.HostName);
|
Assert.AreEqual("host", user.HostName);
|
||||||
|
@ -159,12 +158,12 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void HostmaskPrivmsgUser()
|
public void HostmaskPrivmsgUser()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line(":nickname!user PRIVMSG #chan :hi"));
|
_server.Parse(new(":nickname!user PRIVMSG #chan :hi"));
|
||||||
Assert.AreEqual("user", _server.UserName);
|
Assert.AreEqual("user", _server.UserName);
|
||||||
Assert.IsNull(_server.HostName);
|
Assert.IsNull(_server.HostName);
|
||||||
|
|
||||||
_server.Parse(new Line(":other!user PRIVMSG #chan :hi"));
|
_server.Parse(new(":other!user PRIVMSG #chan :hi"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.AreEqual("user", user.UserName);
|
Assert.AreEqual("user", user.UserName);
|
||||||
Assert.IsNull(user.HostName);
|
Assert.IsNull(user.HostName);
|
||||||
|
@ -173,12 +172,12 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void HostmaskPrivmsgHost()
|
public void HostmaskPrivmsgHost()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line(":nickname@host PRIVMSG #chan :hi"));
|
_server.Parse(new(":nickname@host PRIVMSG #chan :hi"));
|
||||||
Assert.IsNull(_server.UserName);
|
Assert.IsNull(_server.UserName);
|
||||||
Assert.AreEqual("host", _server.HostName);
|
Assert.AreEqual("host", _server.HostName);
|
||||||
|
|
||||||
_server.Parse(new Line(":other@host PRIVMSG #chan :hi"));
|
_server.Parse(new(":other@host PRIVMSG #chan :hi"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.IsNull(user.UserName);
|
Assert.IsNull(user.UserName);
|
||||||
Assert.AreEqual("host", user.HostName);
|
Assert.AreEqual("host", user.HostName);
|
||||||
|
@ -187,7 +186,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void VisibleHostWithoutUsername()
|
public void VisibleHostWithoutUsername()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("396 * hostname"));
|
_server.Parse(new("396 * hostname"));
|
||||||
Assert.IsNull(_server.UserName);
|
Assert.IsNull(_server.UserName);
|
||||||
Assert.AreEqual("hostname", _server.HostName);
|
Assert.AreEqual("hostname", _server.HostName);
|
||||||
}
|
}
|
||||||
|
@ -195,7 +194,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void VisibleHostWithUsername()
|
public void VisibleHostWithUsername()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("396 * username@hostname"));
|
_server.Parse(new("396 * username@hostname"));
|
||||||
Assert.AreEqual("username", _server.UserName);
|
Assert.AreEqual("username", _server.UserName);
|
||||||
Assert.AreEqual("hostname", _server.HostName);
|
Assert.AreEqual("hostname", _server.HostName);
|
||||||
}
|
}
|
||||||
|
@ -203,10 +202,10 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Who()
|
public void Who()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
_server.Parse(new Line("352 * #chan user host * nickname * :0 real"));
|
_server.Parse(new("352 * #chan user host * nickname * :0 real"));
|
||||||
_server.Parse(new Line("352 * #chan user2 host2 * other * :0 real2"));
|
_server.Parse(new("352 * #chan user2 host2 * other * :0 real2"));
|
||||||
|
|
||||||
Assert.AreEqual("user", _server.UserName);
|
Assert.AreEqual("user", _server.UserName);
|
||||||
Assert.AreEqual("host", _server.HostName);
|
Assert.AreEqual("host", _server.HostName);
|
||||||
|
@ -221,13 +220,13 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Chghost()
|
public void Chghost()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname!user@host JOIN #chan"));
|
_server.Parse(new(":nickname!user@host JOIN #chan"));
|
||||||
_server.Parse(new Line(":nickname CHGHOST u h"));
|
_server.Parse(new(":nickname CHGHOST u h"));
|
||||||
Assert.AreEqual("u", _server.UserName);
|
Assert.AreEqual("u", _server.UserName);
|
||||||
Assert.AreEqual("h", _server.HostName);
|
Assert.AreEqual("h", _server.HostName);
|
||||||
|
|
||||||
_server.Parse(new Line(":other!user2@host2 JOIN #chan"));
|
_server.Parse(new(":other!user2@host2 JOIN #chan"));
|
||||||
_server.Parse(new Line(":other CHGHOST u2 h2"));
|
_server.Parse(new(":other CHGHOST u2 h2"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.AreEqual("u2", user.UserName);
|
Assert.AreEqual("u2", user.UserName);
|
||||||
Assert.AreEqual("h2", user.HostName);
|
Assert.AreEqual("h2", user.HostName);
|
||||||
|
@ -236,15 +235,15 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Whois()
|
public void Whois()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line("311 * nickname u h * :r"));
|
_server.Parse(new("311 * nickname u h * :r"));
|
||||||
Assert.AreEqual("u", _server.UserName);
|
Assert.AreEqual("u", _server.UserName);
|
||||||
Assert.AreEqual("h", _server.HostName);
|
Assert.AreEqual("h", _server.HostName);
|
||||||
Assert.AreEqual("r", _server.RealName);
|
Assert.AreEqual("r", _server.RealName);
|
||||||
|
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
_server.Parse(new Line(":other CHGHOST u2 h2"));
|
_server.Parse(new(":other CHGHOST u2 h2"));
|
||||||
_server.Parse(new Line("311 * other u2 h2 * :r2"));
|
_server.Parse(new("311 * other u2 h2 * :r2"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.AreEqual("u2", user.UserName);
|
Assert.AreEqual("u2", user.UserName);
|
||||||
Assert.AreEqual("h2", user.HostName);
|
Assert.AreEqual("h2", user.HostName);
|
||||||
|
@ -254,14 +253,14 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void AwaySet()
|
public void AwaySet()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.IsNull(_server.Away);
|
Assert.IsNull(_server.Away);
|
||||||
Assert.IsNull(user.Away);
|
Assert.IsNull(user.Away);
|
||||||
|
|
||||||
_server.Parse(new Line(":nickname AWAY :bye bye"));
|
_server.Parse(new(":nickname AWAY :bye bye"));
|
||||||
_server.Parse(new Line(":other AWAY :ich geh weg"));
|
_server.Parse(new(":other AWAY :ich geh weg"));
|
||||||
Assert.AreEqual("bye bye", _server.Away);
|
Assert.AreEqual("bye bye", _server.Away);
|
||||||
Assert.AreEqual("ich geh weg", user.Away);
|
Assert.AreEqual("ich geh weg", user.Away);
|
||||||
}
|
}
|
||||||
|
@ -269,12 +268,12 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void AwayUnset()
|
public void AwayUnset()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
_server.Parse(new Line(":nickname AWAY :bye bye"));
|
_server.Parse(new(":nickname AWAY :bye bye"));
|
||||||
_server.Parse(new Line(":nickname AWAY"));
|
_server.Parse(new(":nickname AWAY"));
|
||||||
_server.Parse(new Line(":other AWAY :ich geh weg"));
|
_server.Parse(new(":other AWAY :ich geh weg"));
|
||||||
_server.Parse(new Line(":other AWAY"));
|
_server.Parse(new(":other AWAY"));
|
||||||
|
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.IsNull(_server.Away);
|
Assert.IsNull(_server.Away);
|
||||||
|
@ -284,14 +283,14 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Setname()
|
public void Setname()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
_server.Parse(new Line(":other JOIN #chan"));
|
_server.Parse(new(":other JOIN #chan"));
|
||||||
var user = _server.Users["other"];
|
var user = _server.Users["other"];
|
||||||
Assert.IsNull(user.RealName);
|
Assert.IsNull(user.RealName);
|
||||||
Assert.IsNull(_server.RealName);
|
Assert.IsNull(_server.RealName);
|
||||||
|
|
||||||
_server.Parse(new Line(":nickname SETNAME :new now know how"));
|
_server.Parse(new(":nickname SETNAME :new now know how"));
|
||||||
_server.Parse(new Line(":other SETNAME :tyrannosaurus hex"));
|
_server.Parse(new(":other SETNAME :tyrannosaurus hex"));
|
||||||
Assert.AreEqual("new now know how", _server.RealName);
|
Assert.AreEqual("new now know how", _server.RealName);
|
||||||
Assert.AreEqual("tyrannosaurus hex", user.RealName);
|
Assert.AreEqual("tyrannosaurus hex", user.RealName);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using IRCStates;
|
using IRCStates;
|
||||||
using IRCTokens;
|
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
namespace IRCSharp.Tests.State
|
namespace IRCSharp.Tests.State
|
||||||
|
@ -12,15 +11,15 @@ namespace IRCSharp.Tests.State
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void TestInitialize()
|
public void TestInitialize()
|
||||||
{
|
{
|
||||||
_server = new Server("test");
|
_server = new("test");
|
||||||
_server.Parse(new Line("001 nickname"));
|
_server.Parse(new("001 nickname"));
|
||||||
_server.Parse(new Line(":nickname JOIN #chan"));
|
_server.Parse(new(":nickname JOIN #chan"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void WhoResponse()
|
public void WhoResponse()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line("352 * #chan user host server nickname * :0 real"));
|
_server.Parse(new("352 * #chan user host server nickname * :0 real"));
|
||||||
var user = _server.Users["nickname"];
|
var user = _server.Users["nickname"];
|
||||||
|
|
||||||
Assert.AreEqual("user", user.UserName);
|
Assert.AreEqual("user", user.UserName);
|
||||||
|
@ -35,7 +34,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Whox()
|
public void Whox()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line($"354 * {Server.WhoType} user realip host nickname account :real"));
|
_server.Parse(new($"354 * {Server.WhoType} user realip host nickname account :real"));
|
||||||
var user = _server.Users["nickname"];
|
var user = _server.Users["nickname"];
|
||||||
|
|
||||||
Assert.AreEqual("user", user.UserName);
|
Assert.AreEqual("user", user.UserName);
|
||||||
|
@ -52,7 +51,7 @@ namespace IRCSharp.Tests.State
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void WhoxNoAccount()
|
public void WhoxNoAccount()
|
||||||
{
|
{
|
||||||
_server.Parse(new Line($"354 * {Server.WhoType} user realip host nickname 0 :real"));
|
_server.Parse(new($"354 * {Server.WhoType} user realip host nickname 0 :real"));
|
||||||
var user = _server.Users["nickname"];
|
var user = _server.Users["nickname"];
|
||||||
|
|
||||||
Assert.IsNull(user.Account);
|
Assert.IsNull(user.Account);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using IRCTokens;
|
using IRCTokens;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
|
@ -13,7 +12,7 @@ namespace IRCSharp.Tests.Tokenization
|
||||||
{
|
{
|
||||||
var line = new Line("PRIVMSG", "#channel", "hello")
|
var line = new Line("PRIVMSG", "#channel", "hello")
|
||||||
{
|
{
|
||||||
Tags = new Dictionary<string, string> {{"id", "\\" + " " + ";" + "\r\n"}}
|
Tags = new() {{"id", "\\" + " " + ";" + "\r\n"}}
|
||||||
}.Format();
|
}.Format();
|
||||||
|
|
||||||
Assert.AreEqual("@id=\\\\\\s\\:\\r\\n PRIVMSG #channel hello", line);
|
Assert.AreEqual("@id=\\\\\\s\\:\\r\\n PRIVMSG #channel hello", line);
|
||||||
|
@ -30,7 +29,7 @@ namespace IRCSharp.Tests.Tokenization
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void NullTag()
|
public void NullTag()
|
||||||
{
|
{
|
||||||
var line = new Line("PRIVMSG", "#channel", "hello") {Tags = new Dictionary<string, string> {{"a", null}}}
|
var line = new Line("PRIVMSG", "#channel", "hello") {Tags = new() {{"a", null}}}
|
||||||
.Format();
|
.Format();
|
||||||
|
|
||||||
Assert.AreEqual("@a PRIVMSG #channel hello", line);
|
Assert.AreEqual("@a PRIVMSG #channel hello", line);
|
||||||
|
@ -39,7 +38,7 @@ namespace IRCSharp.Tests.Tokenization
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void EmptyTag()
|
public void EmptyTag()
|
||||||
{
|
{
|
||||||
var line = new Line("PRIVMSG", "#channel", "hello") {Tags = new Dictionary<string, string> {{"a", ""}}}
|
var line = new Line("PRIVMSG", "#channel", "hello") {Tags = new() {{"a", ""}}}
|
||||||
.Format();
|
.Format();
|
||||||
|
|
||||||
Assert.AreEqual("@a PRIVMSG #channel hello", line);
|
Assert.AreEqual("@a PRIVMSG #channel hello", line);
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace IRCSharp.Tests.Tokenization
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void Initialize()
|
public void Initialize()
|
||||||
{
|
{
|
||||||
_decoder = new IRCTokens.StatefulDecoder();
|
_decoder = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
@ -45,7 +45,7 @@ namespace IRCSharp.Tests.Tokenization
|
||||||
public void EncodingIso8859()
|
public void EncodingIso8859()
|
||||||
{
|
{
|
||||||
var iso8859 = Encoding.GetEncoding("iso-8859-1");
|
var iso8859 = Encoding.GetEncoding("iso-8859-1");
|
||||||
_decoder = new IRCTokens.StatefulDecoder {Encoding = iso8859};
|
_decoder = new() {Encoding = iso8859};
|
||||||
var bytes = iso8859.GetBytes("PRIVMSG #channel :hello Ç\r\n");
|
var bytes = iso8859.GetBytes("PRIVMSG #channel :hello Ç\r\n");
|
||||||
var lines = _decoder.Push(bytes, bytes.Length);
|
var lines = _decoder.Push(bytes, bytes.Length);
|
||||||
var line = new Line("PRIVMSG #channel :hello Ç");
|
var line = new Line("PRIVMSG #channel :hello Ç");
|
||||||
|
@ -56,7 +56,7 @@ namespace IRCSharp.Tests.Tokenization
|
||||||
public void EncodingFallback()
|
public void EncodingFallback()
|
||||||
{
|
{
|
||||||
var latin1 = Encoding.GetEncoding("iso-8859-1");
|
var latin1 = Encoding.GetEncoding("iso-8859-1");
|
||||||
_decoder = new IRCTokens.StatefulDecoder {Encoding = null, Fallback = latin1};
|
_decoder = new() {Encoding = null, Fallback = latin1};
|
||||||
var bytes = latin1.GetBytes("PRIVMSG #channel hélló\r\n");
|
var bytes = latin1.GetBytes("PRIVMSG #channel hélló\r\n");
|
||||||
var lines = _decoder.Push(bytes, bytes.Length);
|
var lines = _decoder.Push(bytes, bytes.Length);
|
||||||
Assert.AreEqual(1, lines.Count);
|
Assert.AreEqual(1, lines.Count);
|
||||||
|
|
|
@ -12,7 +12,7 @@ namespace IRCSharp.Tests.Tokenization
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void Initialize()
|
public void Initialize()
|
||||||
{
|
{
|
||||||
_encoder = new IRCTokens.StatefulEncoder();
|
_encoder = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
@ -68,7 +68,7 @@ namespace IRCSharp.Tests.Tokenization
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Clear()
|
public void Clear()
|
||||||
{
|
{
|
||||||
_encoder.Push(new Line("PRIVMSG #channel hello"));
|
_encoder.Push(new("PRIVMSG #channel hello"));
|
||||||
_encoder.Clear();
|
_encoder.Clear();
|
||||||
Assert.AreEqual(string.Empty, _encoder.Pending());
|
Assert.AreEqual(string.Empty, _encoder.Pending());
|
||||||
}
|
}
|
||||||
|
@ -77,8 +77,8 @@ namespace IRCSharp.Tests.Tokenization
|
||||||
public void EncodingIso8859()
|
public void EncodingIso8859()
|
||||||
{
|
{
|
||||||
var iso8859 = Encoding.GetEncoding("iso-8859-1");
|
var iso8859 = Encoding.GetEncoding("iso-8859-1");
|
||||||
_encoder = new IRCTokens.StatefulEncoder {Encoding = iso8859};
|
_encoder = new() {Encoding = iso8859};
|
||||||
_encoder.Push(new Line("PRIVMSG #channel :hello Ç"));
|
_encoder.Push(new("PRIVMSG #channel :hello Ç"));
|
||||||
CollectionAssert.AreEqual(iso8859.GetBytes("PRIVMSG #channel :hello Ç\r\n"), _encoder.PendingBytes);
|
CollectionAssert.AreEqual(iso8859.GetBytes("PRIVMSG #channel :hello Ç\r\n"), _encoder.PendingBytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace IRCStates
|
||||||
private const string AsciiUpperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
private const string AsciiUpperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
private const string AsciiLowerChars = "abcdefghijklmnopqrstuvwxyz";
|
private const string AsciiLowerChars = "abcdefghijklmnopqrstuvwxyz";
|
||||||
private const string Rfc1459UpperChars = AsciiUpperChars + @"[]~\";
|
private const string Rfc1459UpperChars = AsciiUpperChars + @"[]~\";
|
||||||
private const string Rfc1459LowerChars = AsciiLowerChars + @"{}^|";
|
private const string Rfc1459LowerChars = AsciiLowerChars + "{}^|";
|
||||||
|
|
||||||
private static string Replace(string s, string upper, string lower)
|
private static string Replace(string s, string upper, string lower)
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,22 +6,15 @@ namespace IRCStates
|
||||||
{
|
{
|
||||||
public class Channel
|
public class Channel
|
||||||
{
|
{
|
||||||
public Channel()
|
|
||||||
{
|
|
||||||
Users = new Dictionary<string, ChannelUser>();
|
|
||||||
ListModes = new Dictionary<string, List<string>>();
|
|
||||||
Modes = new Dictionary<string, string>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Name { get; private set; }
|
public string Name { get; private set; }
|
||||||
public string NameLower { get; private set; }
|
public string NameLower { get; private set; }
|
||||||
public Dictionary<string, ChannelUser> Users { get; private set; }
|
public Dictionary<string, ChannelUser> Users { get; private set; } = new Dictionary<string, ChannelUser>();
|
||||||
public string Topic { get; set; }
|
public string Topic { get; set; }
|
||||||
public string TopicSetter { get; set; }
|
public string TopicSetter { get; set; }
|
||||||
public DateTime TopicTime { get; set; }
|
public DateTime TopicTime { get; set; }
|
||||||
public DateTime Created { get; set; }
|
public DateTime Created { get; set; }
|
||||||
public Dictionary<string, List<string>> ListModes { get; private set; }
|
public Dictionary<string, List<string>> ListModes { get; private set; } = new Dictionary<string, List<string>>();
|
||||||
public Dictionary<string, string> Modes { get; private set; }
|
public Dictionary<string, string> Modes { get; private set; } = new Dictionary<string, string>();
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,12 +4,7 @@ namespace IRCStates
|
||||||
{
|
{
|
||||||
public class ChannelUser
|
public class ChannelUser
|
||||||
{
|
{
|
||||||
public ChannelUser()
|
public List<string> Modes { get; } = new List<string>();
|
||||||
{
|
|
||||||
Modes = new List<string>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<string> Modes { get; }
|
|
||||||
|
|
||||||
private bool Equals(ChannelUser other)
|
private bool Equals(ChannelUser other)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>netstandard2.1;net6.0</TargetFrameworks>
|
<TargetFramework>netstandard2.1</TargetFramework>
|
||||||
<PackageId>IRCStates</PackageId>
|
<PackageId>IRCStates</PackageId>
|
||||||
<Version>1.3.0</Version>
|
<Version>1.3.0</Version>
|
||||||
<Authors>Ben Harris</Authors>
|
<Authors>Ben Harris</Authors>
|
||||||
|
|
|
@ -9,26 +9,14 @@ namespace IRCStates
|
||||||
{
|
{
|
||||||
public class ISupport
|
public class ISupport
|
||||||
{
|
{
|
||||||
public ISupport()
|
public Dictionary<string, string> Raw { get; } = new Dictionary<string, string>();
|
||||||
{
|
|
||||||
Raw = new Dictionary<string, string>();
|
|
||||||
Modes = 3;
|
|
||||||
CaseMapping = Casemap.CaseMapping.Rfc1459;
|
|
||||||
Prefix = new ISupportPrefix("(ov)@+");
|
|
||||||
ChanModes = new ISupportChanModes("b,k,l,imnpst");
|
|
||||||
ChanTypes = new List<string> {"#"};
|
|
||||||
StatusMsg = new List<string>();
|
|
||||||
Whox = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Dictionary<string, string> Raw { get; }
|
|
||||||
public string Network { get; private set; }
|
public string Network { get; private set; }
|
||||||
public ISupportChanModes ChanModes { get; private set; }
|
public ISupportChanModes ChanModes { get; private set; } = new ISupportChanModes("b,k,l,imnpst");
|
||||||
public ISupportPrefix Prefix { get; private set; }
|
public ISupportPrefix Prefix { get; private set; } = new ISupportPrefix("(ov)@+");
|
||||||
public int? Modes { get; private set; }
|
public int? Modes { get; private set; } = 3;
|
||||||
public Casemap.CaseMapping CaseMapping { get; private set; }
|
public Casemap.CaseMapping CaseMapping { get; private set; } = Casemap.CaseMapping.Rfc1459;
|
||||||
public List<string> ChanTypes { get; private set; }
|
public List<string> ChanTypes { get; private set; } = new List<string> {"#"};
|
||||||
public List<string> StatusMsg { get; private set; }
|
public List<string> StatusMsg { get; private set; } = new List<string>();
|
||||||
public string CallerId { get; private set; }
|
public string CallerId { get; private set; }
|
||||||
public string Excepts { get; private set; }
|
public string Excepts { get; private set; }
|
||||||
public string Invex { get; private set; }
|
public string Invex { get; private set; }
|
||||||
|
|
|
@ -4,6 +4,7 @@ using System.Linq;
|
||||||
|
|
||||||
namespace IRCStates
|
namespace IRCStates
|
||||||
{
|
{
|
||||||
|
// ReSharper disable once InconsistentNaming
|
||||||
public class ISupportChanModes
|
public class ISupportChanModes
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -5,6 +5,7 @@ using System.Linq;
|
||||||
|
|
||||||
namespace IRCStates
|
namespace IRCStates
|
||||||
{
|
{
|
||||||
|
// ReSharper disable once InconsistentNaming
|
||||||
public class ISupportPrefix
|
public class ISupportPrefix
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -16,7 +17,7 @@ namespace IRCStates
|
||||||
{
|
{
|
||||||
if (splitVal == null) throw new ArgumentNullException(nameof(splitVal));
|
if (splitVal == null) throw new ArgumentNullException(nameof(splitVal));
|
||||||
|
|
||||||
var split = splitVal.Substring(1).Split(')', 2);
|
var split = splitVal[1..].Split(')', 2);
|
||||||
Modes = new List<string>();
|
Modes = new List<string>();
|
||||||
Modes.AddRange(split[0].Select(c => c.ToString(CultureInfo.InvariantCulture)));
|
Modes.AddRange(split[0].Select(c => c.ToString(CultureInfo.InvariantCulture)));
|
||||||
Prefixes = new List<string>();
|
Prefixes = new List<string>();
|
||||||
|
|
|
@ -46,6 +46,7 @@ namespace IRCStates
|
||||||
public Dictionary<string, string> AvailableCaps { get; set; }
|
public Dictionary<string, string> AvailableCaps { get; set; }
|
||||||
public List<string> AgreedCaps { get; set; }
|
public List<string> AgreedCaps { get; set; }
|
||||||
|
|
||||||
|
// ReSharper disable once InconsistentNaming
|
||||||
public ISupport ISupport { get; set; }
|
public ISupport ISupport { get; set; }
|
||||||
public bool HasCap { get; set; }
|
public bool HasCap { get; set; }
|
||||||
|
|
||||||
|
@ -360,9 +361,8 @@ namespace IRCStates
|
||||||
RealName = realname;
|
RealName = realname;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Users.ContainsKey(nicknameLower))
|
if (Users.TryGetValue(nicknameLower, out var user))
|
||||||
{
|
{
|
||||||
var user = Users[nicknameLower];
|
|
||||||
emit.User = user;
|
emit.User = user;
|
||||||
user.RealName = realname;
|
user.RealName = realname;
|
||||||
}
|
}
|
||||||
|
@ -387,9 +387,8 @@ namespace IRCStates
|
||||||
Away = away;
|
Away = away;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Users.ContainsKey(nicknameLower))
|
if (Users.TryGetValue(nicknameLower, out var user))
|
||||||
{
|
{
|
||||||
var user = Users[nicknameLower];
|
|
||||||
emit.User = user;
|
emit.User = user;
|
||||||
user.Away = away;
|
user.Away = away;
|
||||||
}
|
}
|
||||||
|
@ -414,9 +413,8 @@ namespace IRCStates
|
||||||
Account = account;
|
Account = account;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Users.ContainsKey(nicknameLower))
|
if (Users.TryGetValue(nicknameLower, out var user))
|
||||||
{
|
{
|
||||||
var user = Users[nicknameLower];
|
|
||||||
emit.User = user;
|
emit.User = user;
|
||||||
user.Account = account;
|
user.Account = account;
|
||||||
}
|
}
|
||||||
|
@ -473,7 +471,7 @@ namespace IRCStates
|
||||||
foreach (var key in tokens.Keys)
|
foreach (var key in tokens.Keys)
|
||||||
if (key.StartsWith('-'))
|
if (key.StartsWith('-'))
|
||||||
{
|
{
|
||||||
var k = key.Substring(1);
|
var k = key[1..];
|
||||||
if (AgreedCaps.Contains(k)) AgreedCaps.Remove(k);
|
if (AgreedCaps.Contains(k)) AgreedCaps.Remove(k);
|
||||||
}
|
}
|
||||||
else if (!AgreedCaps.Contains(key) && AvailableCaps.ContainsKey(key))
|
else if (!AgreedCaps.Contains(key) && AvailableCaps.ContainsKey(key))
|
||||||
|
@ -518,9 +516,8 @@ namespace IRCStates
|
||||||
HostName = hostname;
|
HostName = hostname;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Users.ContainsKey(nicknameLower))
|
if (Users.TryGetValue(nicknameLower, out var user))
|
||||||
{
|
{
|
||||||
var user = Users[nicknameLower];
|
|
||||||
emit.User = user;
|
emit.User = user;
|
||||||
user.UserName = username;
|
user.UserName = username;
|
||||||
user.HostName = hostname;
|
user.HostName = hostname;
|
||||||
|
@ -688,7 +685,7 @@ namespace IRCStates
|
||||||
if (ISupport.StatusMsg.Contains(t))
|
if (ISupport.StatusMsg.Contains(t))
|
||||||
{
|
{
|
||||||
statusMsg.Add(t);
|
statusMsg.Add(t);
|
||||||
target = target.Substring(1);
|
target = target[1..];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -895,8 +892,8 @@ namespace IRCStates
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
var hostmask = new Hostmask(nick.Substring(modes.Length));
|
var hostmask = new Hostmask(nick[modes.Length..]);
|
||||||
var user = GetUser(hostmask.NickName) ?? AddUser(hostmask.NickName);
|
var user = GetUser(hostmask.NickName) ?? AddUser(hostmask.NickName);
|
||||||
|
|
||||||
users.Add(user);
|
users.Add(user);
|
||||||
var channelUser = UserJoin(channel, user);
|
var channelUser = UserJoin(channel, user);
|
||||||
|
|
|
@ -4,11 +4,6 @@ namespace IRCStates
|
||||||
{
|
{
|
||||||
public class User
|
public class User
|
||||||
{
|
{
|
||||||
public User()
|
|
||||||
{
|
|
||||||
Channels = new HashSet<string>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public string NickName { get; private set; }
|
public string NickName { get; private set; }
|
||||||
public string NickNameLower { get; private set; }
|
public string NickNameLower { get; private set; }
|
||||||
|
|
||||||
|
@ -17,7 +12,7 @@ namespace IRCStates
|
||||||
public string RealName { get; set; }
|
public string RealName { get; set; }
|
||||||
public string Account { get; set; }
|
public string Account { get; set; }
|
||||||
public string Away { get; set; }
|
public string Away { get; set; }
|
||||||
public HashSet<string> Channels { get; private set; }
|
public HashSet<string> Channels { get; private set; } = new HashSet<string>();
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>netstandard2.1;net6.0</TargetFrameworks>
|
<TargetFramework>netstandard2.1</TargetFramework>
|
||||||
<PackageId>IRCTokens</PackageId>
|
<PackageId>IRCTokens</PackageId>
|
||||||
<Version>1.3.0</Version>
|
<Version>1.3.0</Version>
|
||||||
<Authors>Ben Harris</Authors>
|
<Authors>Ben Harris</Authors>
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace IRCTokens
|
||||||
{
|
{
|
||||||
private static readonly string[] TagUnescaped = {"\\", " ", ";", "\r", "\n"};
|
private static readonly string[] TagUnescaped = {"\\", " ", ";", "\r", "\n"};
|
||||||
|
|
||||||
private static readonly string[] TagEscaped = {"\\\\", "\\s", "\\:", "\\r", "\\n"};
|
private static readonly string[] TagEscaped = {@"\\", "\\s", "\\:", "\\r", "\\n"};
|
||||||
|
|
||||||
private Hostmask _hostmask;
|
private Hostmask _hostmask;
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ namespace IRCTokens
|
||||||
var messageTags = split[0];
|
var messageTags = split[0];
|
||||||
line = split[1];
|
line = split[1];
|
||||||
|
|
||||||
foreach (var part in messageTags.Substring(1).Split(';'))
|
foreach (var part in messageTags[1..].Split(';'))
|
||||||
if (part.Contains('=', StringComparison.Ordinal))
|
if (part.Contains('=', StringComparison.Ordinal))
|
||||||
{
|
{
|
||||||
split = part.Split('=', 2);
|
split = part.Split('=', 2);
|
||||||
|
@ -77,7 +77,7 @@ namespace IRCTokens
|
||||||
|
|
||||||
if (Params[0].StartsWith(':'))
|
if (Params[0].StartsWith(':'))
|
||||||
{
|
{
|
||||||
Source = Params[0].Substring(1);
|
Source = Params[0][1..];
|
||||||
Params.RemoveAt(0);
|
Params.RemoveAt(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"sdk": {
|
||||||
|
"version": "8.0.0",
|
||||||
|
"rollForward": "latestMajor",
|
||||||
|
"allowPrerelease": true
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue