diff --git a/Makefile.in b/Makefile.in index c26b3d96..ae6235af 100644 --- a/Makefile.in +++ b/Makefile.in @@ -47,7 +47,7 @@ LIB_SRCS := $(addprefix src/,$(LIB_SRCS)) BIN_SRCS := src/main.cpp LIB_OBJS := $(patsubst %cpp,%o,$(LIB_SRCS)) BIN_OBJS := $(patsubst %cpp,%o,$(BIN_SRCS)) -TESTS := StringTest ConfigTest UtilsTest ThreadTest +TESTS := StringTest ConfigTest UtilsTest ThreadTest NickTest TESTS := $(addprefix test/,$(addsuffix .o,$(TESTS))) CLEAN := znc src/*.o test/*.o core core.* .version_extra .depend modules/.depend unittest DISTCLEAN := Makefile config.log config.status znc-buildmod \ diff --git a/src/Nick.cpp b/src/Nick.cpp index 5d225be5..4f735946 100644 --- a/src/Nick.cpp +++ b/src/Nick.cpp @@ -49,7 +49,7 @@ void CNick::Parse(const CString& sNickMask) { return; } - m_sNick = sNickMask.substr((sNickMask[0] == ':'), uPos); + m_sNick = sNickMask.substr((sNickMask[0] == ':'), uPos - (sNickMask[0] == ':')); m_sHost = sNickMask.substr(uPos +1); if ((uPos = m_sHost.find('@')) != CString::npos) { diff --git a/test/NickTest.cpp b/test/NickTest.cpp new file mode 100644 index 00000000..56a352d0 --- /dev/null +++ b/test/NickTest.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2004-2014 ZNC, see the NOTICE file for details. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +TEST(NickTest, Parse) { + CNick Nick1("nick!~ident@host"); + EXPECT_EQ("nick", Nick1.GetNick()); + EXPECT_EQ("~ident", Nick1.GetIdent()); + EXPECT_EQ("host", Nick1.GetHost()); + EXPECT_EQ("nick!~ident@host", Nick1.GetNickMask()); + EXPECT_EQ("nick!~ident@host", Nick1.GetHostMask()); + EXPECT_TRUE(Nick1.NickEquals("nick")); + + CNick Nick2(":nick!~ident@host"); + EXPECT_EQ("nick", Nick2.GetNick()); + EXPECT_EQ("~ident", Nick2.GetIdent()); + EXPECT_EQ("host", Nick2.GetHost()); + EXPECT_EQ("nick!~ident@host", Nick2.GetNickMask()); + EXPECT_EQ("nick!~ident@host", Nick2.GetHostMask()); + EXPECT_TRUE(Nick2.NickEquals("nick")); +}