diff options
Diffstat (limited to 'juick-common/src/test/java/com/juick/MessageTest.java')
-rw-r--r-- | juick-common/src/test/java/com/juick/MessageTest.java | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/juick-common/src/test/java/com/juick/MessageTest.java b/juick-common/src/test/java/com/juick/MessageTest.java new file mode 100644 index 00000000..45c5730c --- /dev/null +++ b/juick-common/src/test/java/com/juick/MessageTest.java @@ -0,0 +1,192 @@ +/* + * Copyright (C) 2008-2017, Juick + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package com.juick; + +import com.juick.util.MessageUtils; +import org.apache.commons.lang3.RandomUtils; +import org.apache.commons.lang3.StringUtils; +import org.junit.Test; +import rocks.xmpp.addr.Jid; +import rocks.xmpp.core.session.Extension; +import rocks.xmpp.core.session.XmppSession; +import rocks.xmpp.core.session.XmppSessionConfiguration; + +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; +import java.io.StringReader; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.*; + +/** + * Created by aalexeev on 12/7/16. + */ +public class MessageTest { + + @Test + public void equalsShouldBeReturnCorrectResult() { + Message message1 = new Message(); + + Message message2 = new Message(); + message2.setMid(RandomUtils.nextInt()); + + Message message3 = message1; + + assertThat(message1, equalTo(message3)); + assertThat(message3, equalTo(message1)); + + assertThat(message1, not(equalTo(message2))); + assertThat(message2, not(equalTo(message1))); + + int id = RandomUtils.nextInt(); + message1.setMid(id); + message2.setMid(id); + + id = RandomUtils.nextInt(); + message1.setRid(id); + message2.setRid(id); + + assertThat(message1, equalTo(message2)); + assertThat(message2, equalTo(message1)); + + message1.setMid(RandomUtils.nextInt()); + message1.setRid(RandomUtils.nextInt()); + + message2.setMid(RandomUtils.nextInt()); + message2.setRid(RandomUtils.nextInt()); + + assertThat(message1, not(equalTo(message2))); + assertThat(message2, not(equalTo(message1))); + } + + @Test + public void compareShouldBeReturnCorrectResult() { + Message message1 = new Message(); + + message1.setMid(RandomUtils.nextInt()); + message1.setRid(RandomUtils.nextInt()); + + Message message2 = message1; + + assertThat(message1.compareTo(message2), equalTo(0)); + assertThat(message2.compareTo(message1), equalTo(0)); + + Message message3 = new Message(); + + message3.setMid(message1.getMid()); + message3.setRid(message1.getRid()); + + assertThat(message1.compareTo(message3), equalTo(0)); + assertThat(message3.compareTo(message1), equalTo(0)); + } + + @Test + public void messageWithGreaterMidShouldBeLessThenMesageWithLessMid() { + Message message1 = new Message(); + + message1.setMid(RandomUtils.nextInt()); + message1.setRid(RandomUtils.nextInt()); + + Message message2 = new Message(); + + message2.setMid(message1.getMid() + RandomUtils.nextInt(1, 10000)); + message2.setRid(RandomUtils.nextInt()); + + assertThat(message1.compareTo(message2), equalTo(1)); + assertThat(message2.compareTo(message1), equalTo(-1)); + } + + @Test + public void messageWithGreaterRidAndEqualsMidShouldBeGreaterThenMessageWithLessRid() { + Message message1 = new Message(); + + message1.setMid(RandomUtils.nextInt()); + message1.setRid(RandomUtils.nextInt()); + + Message message2 = new Message(); + + message2.setMid(message1.getMid()); + message2.setRid(message1.getRid() + + RandomUtils.nextInt(1, 10000)); + + assertThat(message1.compareTo(message2), equalTo(-1)); + assertThat(message2.compareTo(message1), equalTo(1)); + } + + @Test + public void tagsStringShouldBeEmptyIfNoTags() { + Message message = new Message(); + + assertThat(MessageUtils.getTagsString(message), isEmptyString()); + + message.FriendsOnly = true; + + assertThat(MessageUtils.getTagsString(message), isEmptyString()); + + message.Hidden = true; + message.ReadOnly = true; + + assertThat(MessageUtils.getTagsString(message), isEmptyString()); + + message.setTags(MessageUtils.parseTags(" ")); + + assertThat(MessageUtils.getTagsString(message), isEmptyString()); + } + + @Test + public void tagsStringShouldHasNoTagDuplicates() { + Message message = new Message(); + + message.setTags(MessageUtils.parseTags("test")); + + assertThat(StringUtils.countMatches(MessageUtils.getTagsString(message), "*test"), equalTo(1)); + + message.setTags(MessageUtils.parseTags("test test")); + + assertThat(StringUtils.countMatches(MessageUtils.getTagsString(message), "*test"), equalTo(1)); + + message.setTags(MessageUtils.parseTags("test test ab test")); + + assertThat(StringUtils.countMatches(MessageUtils.getTagsString(message), "*test"), equalTo(1)); + assertThat(StringUtils.countMatches(MessageUtils.getTagsString(message), "*ab"), equalTo(1)); + } + @Test + public void tagsShouldBeDeserializedFromXml() throws JAXBException { + XmppSessionConfiguration configuration = XmppSessionConfiguration.builder() + .extensions(Extension.of(com.juick.Message.class)) + .build(); + XmppSession xmpp = new XmppSession("juick.com", configuration) { + @Override + public void connect(Jid from) { + + } + + @Override + public Jid getConnectedResource() { + return null; + } + }; + String tag = "<tag xmlns='http://juick.com/message'>yo</tag>"; + String xml = "<message xmlns='jabber:client' from='juick@juick.com' type='chat'><body>yo</body><juick mid='1' ts='2017-09-14' uid='1' uname='ugnich' xmlns='http://juick.com/message'><body>yo</body><user uid='1' uname='ugnich' xmlns='http://juick.com/user'/><tag>yo</tag><tag>people</tag></juick></message>"; + Unmarshaller unmarshaller = xmpp.createUnmarshaller(); + rocks.xmpp.core.stanza.model.Message xmppMessage = (rocks.xmpp.core.stanza.model.Message) unmarshaller.unmarshal(new StringReader(xml)); + Tag xmlTag = (Tag) unmarshaller.unmarshal(new StringReader(tag)); + assertThat(xmlTag.getName(), equalTo("yo")); + Message juickMessage = xmppMessage.getExtension(Message.class); + assertThat(juickMessage.getTags().get(0).getName(), equalTo("yo")); + } +} |