Compare commits
	
		
			11 Commits
		
	
	
		
			ec963ef691
			...
			cf36174de7
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| cf36174de7 | |||
| b7f0cc4217 | |||
| a0f6d000ec | |||
| ca3323c00f | |||
| f52180c385 | |||
| 949cde9e2b | |||
|   | 497c6879e0 | ||
|   | 7b27dfaf5e | ||
|   | f9b75c4a3a | ||
|   | 0509303fd3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f486a251f3 | 
| @@ -1,12 +1,13 @@ | |||||||
| package net.md_5.bungee.api; | package net.md_5.bungee.api; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import java.net.InetSocketAddress; | import java.net.InetSocketAddress; | ||||||
| import java.net.SocketAddress; | import java.net.SocketAddress; | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import net.md_5.bungee.api.config.ServerInfo; | import net.md_5.bungee.api.config.ServerInfo; | ||||||
| import net.md_5.bungee.api.connection.ProxiedPlayer; | import net.md_5.bungee.api.connection.ProxiedPlayer; | ||||||
| import net.md_5.bungee.api.event.ServerConnectEvent; | import net.md_5.bungee.api.event.ServerConnectEvent; | ||||||
| import org.junit.Test; | import org.junit.jupiter.api.Test; | ||||||
|  |  | ||||||
| public class ServerConnectRequestTest | public class ServerConnectRequestTest | ||||||
| { | { | ||||||
| @@ -78,15 +79,15 @@ public class ServerConnectRequestTest | |||||||
|         } |         } | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     @Test(expected = NullPointerException.class) |     @Test | ||||||
|     public void testNullTarget() |     public void testNullTarget() | ||||||
|     { |     { | ||||||
|         ServerConnectRequest.builder().target( null ).reason( ServerConnectEvent.Reason.JOIN_PROXY ).build(); |         assertThrows( NullPointerException.class, () -> ServerConnectRequest.builder().target( null ).reason( ServerConnectEvent.Reason.JOIN_PROXY ).build() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test(expected = NullPointerException.class) |     @Test | ||||||
|     public void testNullReason() |     public void testNullReason() | ||||||
|     { |     { | ||||||
|         ServerConnectRequest.builder().target( DUMMY_INFO ).reason( null ).build(); |         assertThrows( NullPointerException.class, () -> ServerConnectRequest.builder().target( DUMMY_INFO ).reason( null ).build() ); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,63 +1,38 @@ | |||||||
| package net.md_5.bungee.util; | package net.md_5.bungee.util; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import io.netty.channel.unix.DomainSocketAddress; | import io.netty.channel.unix.DomainSocketAddress; | ||||||
| import java.net.InetSocketAddress; | import java.net.InetSocketAddress; | ||||||
| import java.net.SocketAddress; | import java.net.SocketAddress; | ||||||
| import java.util.Arrays; | import java.util.stream.Stream; | ||||||
| import java.util.Collection; |  | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
| import net.md_5.bungee.Util; | import net.md_5.bungee.Util; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.params.ParameterizedTest; | ||||||
| import org.junit.Test; | import org.junit.jupiter.params.provider.Arguments; | ||||||
| import org.junit.runner.RunWith; | import org.junit.jupiter.params.provider.MethodSource; | ||||||
| import org.junit.runners.Parameterized; |  | ||||||
| import org.junit.runners.Parameterized.Parameters; |  | ||||||
|  |  | ||||||
| @RequiredArgsConstructor | @RequiredArgsConstructor | ||||||
| @RunWith(Parameterized.class) |  | ||||||
| public class AddressParseTest | public class AddressParseTest | ||||||
| { | { | ||||||
|  |  | ||||||
|     @Parameters |     public static Stream<Arguments> data() | ||||||
|     public static Collection<Object[]> data() |  | ||||||
|     { |     { | ||||||
|         return Arrays.asList( new Object[][] |         return Stream.of( | ||||||
|         { |                 Arguments.of( "127.0.0.1", "127.0.0.1", Util.DEFAULT_PORT ), | ||||||
|             { |                 Arguments.of( "127.0.0.1:1337", "127.0.0.1", 1337 ), | ||||||
|                 "127.0.0.1", "127.0.0.1", Util.DEFAULT_PORT |                 Arguments.of( "[::1]", "0:0:0:0:0:0:0:1", Util.DEFAULT_PORT ), | ||||||
|             }, |                 Arguments.of( "[0:0:0:0::1]", "0:0:0:0:0:0:0:1", Util.DEFAULT_PORT ), | ||||||
|             { |                 Arguments.of( "[0:0:0:0:0:0:0:1]", "0:0:0:0:0:0:0:1", Util.DEFAULT_PORT ), | ||||||
|                 "127.0.0.1:1337", "127.0.0.1", 1337 |                 Arguments.of( "[::1]:1337", "0:0:0:0:0:0:0:1", 1337 ), | ||||||
|             }, |                 Arguments.of( "[0:0:0:0::1]:1337", "0:0:0:0:0:0:0:1", 1337 ), | ||||||
|             { |                 Arguments.of( "[0:0:0:0:0:0:0:1]:1337", "0:0:0:0:0:0:0:1", 1337 ), | ||||||
|                 "[::1]", "0:0:0:0:0:0:0:1", Util.DEFAULT_PORT |                 Arguments.of( "unix:///var/run/bungee.sock", "/var/run/bungee.sock", -1 ) | ||||||
|             }, |         ); | ||||||
|             { |  | ||||||
|                 "[0:0:0:0::1]", "0:0:0:0:0:0:0:1", Util.DEFAULT_PORT |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 "[0:0:0:0:0:0:0:1]", "0:0:0:0:0:0:0:1", Util.DEFAULT_PORT |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 "[::1]:1337", "0:0:0:0:0:0:0:1", 1337 |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 "[0:0:0:0::1]:1337", "0:0:0:0:0:0:0:1", 1337 |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 "[0:0:0:0:0:0:0:1]:1337", "0:0:0:0:0:0:0:1", 1337 |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 "unix:///var/run/bungee.sock", "/var/run/bungee.sock", -1 |  | ||||||
|     } |     } | ||||||
|         } ); |  | ||||||
|     } |  | ||||||
|     private final String line; |  | ||||||
|     private final String host; |  | ||||||
|     private final int port; |  | ||||||
|  |  | ||||||
|     @Test |     @ParameterizedTest | ||||||
|     public void test() |     @MethodSource("data") | ||||||
|  |     public void test(String line, String host, int port) | ||||||
|     { |     { | ||||||
|         SocketAddress parsed = Util.getAddr( line ); |         SocketAddress parsed = Util.getAddr( line ); | ||||||
|  |  | ||||||
| @@ -65,14 +40,14 @@ public class AddressParseTest | |||||||
|         { |         { | ||||||
|             InetSocketAddress tcp = (InetSocketAddress) parsed; |             InetSocketAddress tcp = (InetSocketAddress) parsed; | ||||||
|  |  | ||||||
|             Assert.assertEquals( host, tcp.getHostString() ); |             assertEquals( host, tcp.getHostString() ); | ||||||
|             Assert.assertEquals( port, tcp.getPort() ); |             assertEquals( port, tcp.getPort() ); | ||||||
|         } else if ( parsed instanceof DomainSocketAddress ) |         } else if ( parsed instanceof DomainSocketAddress ) | ||||||
|         { |         { | ||||||
|             DomainSocketAddress unix = (DomainSocketAddress) parsed; |             DomainSocketAddress unix = (DomainSocketAddress) parsed; | ||||||
|  |  | ||||||
|             Assert.assertEquals( host, unix.path() ); |             assertEquals( host, unix.path() ); | ||||||
|             Assert.assertEquals( -1, port ); |             assertEquals( -1, port ); | ||||||
|         } else |         } else | ||||||
|         { |         { | ||||||
|             throw new AssertionError( "Unknown socket " + parsed ); |             throw new AssertionError( "Unknown socket " + parsed ); | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| package net.md_5.bungee.util; | package net.md_5.bungee.util; | ||||||
|  |  | ||||||
| import org.junit.Assert; | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import org.junit.Test; | import org.junit.jupiter.api.Test; | ||||||
|  |  | ||||||
| public class CaseInsensitiveTest | public class CaseInsensitiveTest | ||||||
| { | { | ||||||
| @@ -13,12 +13,12 @@ public class CaseInsensitiveTest | |||||||
|         CaseInsensitiveMap<Object> map = new CaseInsensitiveMap<>(); |         CaseInsensitiveMap<Object> map = new CaseInsensitiveMap<>(); | ||||||
|  |  | ||||||
|         map.put( "FOO", obj ); |         map.put( "FOO", obj ); | ||||||
|         Assert.assertTrue( map.contains( "foo" ) ); // Assert that contains is case insensitive |         assertTrue( map.contains( "foo" ) ); // Assert that contains is case insensitive | ||||||
|         Assert.assertTrue( map.entrySet().iterator().next().getKey().equals( "FOO" ) ); // Assert that case is preserved |         assertTrue( map.entrySet().iterator().next().getKey().equals( "FOO" ) ); // Assert that case is preserved | ||||||
|  |  | ||||||
|         // Assert that remove is case insensitive |         // Assert that remove is case insensitive | ||||||
|         map.remove( "FoO" ); |         map.remove( "FoO" ); | ||||||
|         Assert.assertFalse( map.contains( "foo" ) ); |         assertFalse( map.contains( "foo" ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -27,8 +27,8 @@ public class CaseInsensitiveTest | |||||||
|         CaseInsensitiveSet set = new CaseInsensitiveSet(); |         CaseInsensitiveSet set = new CaseInsensitiveSet(); | ||||||
|  |  | ||||||
|         set.add( "FOO" ); |         set.add( "FOO" ); | ||||||
|         Assert.assertTrue( set.contains( "foo" ) ); // Assert that contains is case insensitive |         assertTrue( set.contains( "foo" ) ); // Assert that contains is case insensitive | ||||||
|         set.remove( "FoO" ); |         set.remove( "FoO" ); | ||||||
|         Assert.assertFalse( set.contains( "foo" ) ); // Assert that remove is case insensitive |         assertFalse( set.contains( "foo" ) ); // Assert that remove is case insensitive | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| package net.md_5.bungee.util; | package net.md_5.bungee.util; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import java.util.UUID; | import java.util.UUID; | ||||||
| import net.md_5.bungee.Util; | import net.md_5.bungee.Util; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.api.Test; | ||||||
| import org.junit.Test; |  | ||||||
|  |  | ||||||
| public class UUIDTest | public class UUIDTest | ||||||
| { | { | ||||||
| @@ -13,7 +13,7 @@ public class UUIDTest | |||||||
|     { |     { | ||||||
|         UUID uuid = UUID.fromString( "af74a02d-19cb-445b-b07f-6866a861f783" ); |         UUID uuid = UUID.fromString( "af74a02d-19cb-445b-b07f-6866a861f783" ); | ||||||
|         UUID uuid1 = Util.getUUID( "af74a02d19cb445bb07f6866a861f783" ); |         UUID uuid1 = Util.getUUID( "af74a02d19cb445bb07f6866a861f783" ); | ||||||
|         Assert.assertEquals( uuid, uuid1 ); |         assertEquals( uuid, uuid1 ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -23,7 +23,7 @@ public class UUIDTest | |||||||
|         { |         { | ||||||
|             UUID expected = UUID.randomUUID(); |             UUID expected = UUID.randomUUID(); | ||||||
|             UUID actual = Util.getUUID( expected.toString().replace( "-", "" ) ); |             UUID actual = Util.getUUID( expected.toString().replace( "-", "" ) ); | ||||||
|             Assert.assertEquals( "Could not parse UUID " + expected, expected, actual ); |             assertEquals( expected, actual, "Could not parse UUID " + expected ); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| package net.md_5.bungee.api.chat; | package net.md_5.bungee.api.chat; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import java.awt.Color; | import java.awt.Color; | ||||||
| import java.util.function.BiFunction; | import java.util.function.BiFunction; | ||||||
| import java.util.function.Consumer; | import java.util.function.Consumer; | ||||||
| @@ -10,8 +11,7 @@ import net.md_5.bungee.api.ChatColor; | |||||||
| import net.md_5.bungee.api.chat.hover.content.Item; | import net.md_5.bungee.api.chat.hover.content.Item; | ||||||
| import net.md_5.bungee.api.chat.hover.content.Text; | import net.md_5.bungee.api.chat.hover.content.Text; | ||||||
| import net.md_5.bungee.chat.ComponentSerializer; | import net.md_5.bungee.chat.ComponentSerializer; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.api.Test; | ||||||
| import org.junit.Test; |  | ||||||
|  |  | ||||||
| public class ComponentsTest | public class ComponentsTest | ||||||
| { | { | ||||||
| @@ -20,14 +20,14 @@ public class ComponentsTest | |||||||
|     { |     { | ||||||
|         String json = ComponentSerializer.toString( components ); |         String json = ComponentSerializer.toString( components ); | ||||||
|         BaseComponent[] parsed = ComponentSerializer.parse( json ); |         BaseComponent[] parsed = ComponentSerializer.parse( json ); | ||||||
|         Assert.assertEquals( TextComponent.toLegacyText( parsed ), TextComponent.toLegacyText( components ) ); |         assertEquals( TextComponent.toLegacyText( parsed ), TextComponent.toLegacyText( components ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static void testDissembleReassemble(BaseComponent component) |     public static void testDissembleReassemble(BaseComponent component) | ||||||
|     { |     { | ||||||
|         String json = ComponentSerializer.toString( component ); |         String json = ComponentSerializer.toString( component ); | ||||||
|         BaseComponent[] parsed = ComponentSerializer.parse( json ); |         BaseComponent[] parsed = ComponentSerializer.parse( json ); | ||||||
|         Assert.assertEquals( TextComponent.toLegacyText( parsed ), TextComponent.toLegacyText( component ) ); |         assertEquals( TextComponent.toLegacyText( parsed ), TextComponent.toLegacyText( component ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static void testAssembleDissemble(String json, boolean modern) |     public static void testAssembleDissemble(String json, boolean modern) | ||||||
| @@ -35,11 +35,11 @@ public class ComponentsTest | |||||||
|         if ( modern ) |         if ( modern ) | ||||||
|         { |         { | ||||||
|             BaseComponent deserialized = ComponentSerializer.deserialize( json ); |             BaseComponent deserialized = ComponentSerializer.deserialize( json ); | ||||||
|             Assert.assertEquals( json, ComponentSerializer.toString( deserialized ) ); |             assertEquals( json, ComponentSerializer.toString( deserialized ) ); | ||||||
|         } else |         } else | ||||||
|         { |         { | ||||||
|             BaseComponent[] parsed = ComponentSerializer.parse( json ); |             BaseComponent[] parsed = ComponentSerializer.parse( json ); | ||||||
|             Assert.assertEquals( json, ComponentSerializer.toString( parsed ) ); |             assertEquals( json, ComponentSerializer.toString( parsed ) ); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -69,7 +69,7 @@ public class ComponentsTest | |||||||
|         json = "{\"extra\":[{\"text\":\"[\"},{\"extra\":[{\"translate\":\"block.minecraft.dirt\"}],\"text\":\"\"},{\"text\":\"]\"}],\"hoverEvent\":{\"action\":\"show_item\",\"value\":[" + hoverVal + "]},\"text\":\"\"}"; |         json = "{\"extra\":[{\"text\":\"[\"},{\"extra\":[{\"translate\":\"block.minecraft.dirt\"}],\"text\":\"\"},{\"text\":\"]\"}],\"hoverEvent\":{\"action\":\"show_item\",\"value\":[" + hoverVal + "]},\"text\":\"\"}"; | ||||||
|         components = ComponentSerializer.parse( json ); |         components = ComponentSerializer.parse( json ); | ||||||
|         Text contentText = ( (Text) components[0].getHoverEvent().getContents().get( 0 ) ); |         Text contentText = ( (Text) components[0].getHoverEvent().getContents().get( 0 ) ); | ||||||
|         Assert.assertEquals( hoverVal, ComponentSerializer.toString( (BaseComponent[]) contentText.getValue() ) ); |         assertEquals( hoverVal, ComponentSerializer.toString( (BaseComponent[]) contentText.getValue() ) ); | ||||||
|         testDissembleReassemble( components ); |         testDissembleReassemble( components ); | ||||||
|         ////////// |         ////////// | ||||||
|         TextComponent component1 = new TextComponent( "HoverableText" ); |         TextComponent component1 = new TextComponent( "HoverableText" ); | ||||||
| @@ -80,10 +80,10 @@ public class ComponentsTest | |||||||
|         json = ComponentSerializer.toString( component1 ); |         json = ComponentSerializer.toString( component1 ); | ||||||
|         components = ComponentSerializer.parse( json ); |         components = ComponentSerializer.parse( json ); | ||||||
|         Item parsedContentItem = ( (Item) components[0].getHoverEvent().getContents().get( 0 ) ); |         Item parsedContentItem = ( (Item) components[0].getHoverEvent().getContents().get( 0 ) ); | ||||||
|         Assert.assertEquals( contentItem, parsedContentItem ); |         assertEquals( contentItem, parsedContentItem ); | ||||||
|         Assert.assertEquals( contentItem.getCount(), parsedContentItem.getCount() ); |         assertEquals( contentItem.getCount(), parsedContentItem.getCount() ); | ||||||
|         Assert.assertEquals( contentItem.getId(), parsedContentItem.getId() ); |         assertEquals( contentItem.getId(), parsedContentItem.getId() ); | ||||||
|         Assert.assertEquals( nbt, parsedContentItem.getTag().getNbt() ); |         assertEquals( nbt, parsedContentItem.getTag().getNbt() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -91,8 +91,8 @@ public class ComponentsTest | |||||||
|     { |     { | ||||||
|         this.testEmptyComponentBuilder( |         this.testEmptyComponentBuilder( | ||||||
|                 ComponentBuilder::create, |                 ComponentBuilder::create, | ||||||
|                 (components) -> Assert.assertEquals( components.length, 0 ), |                 (components) -> assertEquals( components.length, 0 ), | ||||||
|                 (components, size) -> Assert.assertEquals( size, components.length ) |                 (components, size) -> assertEquals( size, components.length ) | ||||||
|         ); |         ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -101,8 +101,8 @@ public class ComponentsTest | |||||||
|     { |     { | ||||||
|         this.testEmptyComponentBuilder( |         this.testEmptyComponentBuilder( | ||||||
|                 ComponentBuilder::build, |                 ComponentBuilder::build, | ||||||
|                 (component) -> Assert.assertNull( component.getExtra() ), |                 (component) -> assertNull( component.getExtra() ), | ||||||
|                 (component, size) -> Assert.assertEquals( component.getExtra().size(), size ) |                 (component, size) -> assertEquals( component.getExtra().size(), size ) | ||||||
|         ); |         ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -125,23 +125,23 @@ public class ComponentsTest | |||||||
|     public void testDummyRetaining() |     public void testDummyRetaining() | ||||||
|     { |     { | ||||||
|         ComponentBuilder builder = new ComponentBuilder(); |         ComponentBuilder builder = new ComponentBuilder(); | ||||||
|         Assert.assertNotNull( builder.getCurrentComponent() ); |         assertNotNull( builder.getCurrentComponent() ); | ||||||
|         builder.color( ChatColor.GREEN ); |         builder.color( ChatColor.GREEN ); | ||||||
|         builder.append( "test ", ComponentBuilder.FormatRetention.ALL ); |         builder.append( "test ", ComponentBuilder.FormatRetention.ALL ); | ||||||
|         Assert.assertEquals( builder.getCurrentComponent().getColor(), ChatColor.GREEN ); |         assertEquals( builder.getCurrentComponent().getColor(), ChatColor.GREEN ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test(expected = IndexOutOfBoundsException.class) |     @Test | ||||||
|     public void testComponentGettingExceptions() |     public void testComponentGettingExceptions() | ||||||
|     { |     { | ||||||
|         ComponentBuilder builder = new ComponentBuilder(); |         ComponentBuilder builder = new ComponentBuilder(); | ||||||
|         builder.getComponent( -1 ); |         assertThrows( IndexOutOfBoundsException.class, () -> builder.getComponent( -1 ) ); | ||||||
|         builder.getComponent( 0 ); |         assertThrows( IndexOutOfBoundsException.class, () -> builder.getComponent( 0 ) ); | ||||||
|         builder.getComponent( 1 ); |         assertThrows( IndexOutOfBoundsException.class, () -> builder.getComponent( 1 ) ); | ||||||
|         BaseComponent component = new TextComponent( "Hello" ); |         BaseComponent component = new TextComponent( "Hello" ); | ||||||
|         builder.append( component ); |         builder.append( component ); | ||||||
|         Assert.assertEquals( builder.getComponent( 0 ), component ); |         assertEquals( builder.getComponent( 0 ), component ); | ||||||
|         builder.getComponent( 1 ); |         assertThrows( IndexOutOfBoundsException.class, () -> builder.getComponent( 1 ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -150,33 +150,33 @@ public class ComponentsTest | |||||||
|         ComponentBuilder builder = new ComponentBuilder(); |         ComponentBuilder builder = new ComponentBuilder(); | ||||||
|         TextComponent apple = new TextComponent( "apple" ); |         TextComponent apple = new TextComponent( "apple" ); | ||||||
|         builder.append( apple ); |         builder.append( apple ); | ||||||
|         Assert.assertEquals( builder.getCurrentComponent(), apple ); |         assertEquals( builder.getCurrentComponent(), apple ); | ||||||
|         Assert.assertEquals( builder.getComponent( 0 ), apple ); |         assertEquals( builder.getComponent( 0 ), apple ); | ||||||
|  |  | ||||||
|         TextComponent mango = new TextComponent( "mango" ); |         TextComponent mango = new TextComponent( "mango" ); | ||||||
|         TextComponent orange = new TextComponent( "orange" ); |         TextComponent orange = new TextComponent( "orange" ); | ||||||
|         builder.append( mango ); |         builder.append( mango ); | ||||||
|         builder.append( orange ); |         builder.append( orange ); | ||||||
|         builder.removeComponent( 1 ); // Removing mango |         builder.removeComponent( 1 ); // Removing mango | ||||||
|         Assert.assertEquals( builder.getComponent( 0 ), apple ); |         assertEquals( builder.getComponent( 0 ), apple ); | ||||||
|         Assert.assertEquals( builder.getComponent( 1 ), orange ); |         assertEquals( builder.getComponent( 1 ), orange ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
|     public void testToLegacyFromLegacy() |     public void testToLegacyFromLegacy() | ||||||
|     { |     { | ||||||
|         String text = "§a§lHello §f§kworld§7!"; |         String text = "§a§lHello §f§kworld§7!"; | ||||||
|         Assert.assertEquals( text, TextComponent.toLegacyText( TextComponent.fromLegacyText( text ) ) ); |         assertEquals( text, TextComponent.toLegacyText( TextComponent.fromLegacyText( text ) ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test(expected = IndexOutOfBoundsException.class) |     @Test | ||||||
|     public void testComponentBuilderCursorInvalidPos() |     public void testComponentBuilderCursorInvalidPos() | ||||||
|     { |     { | ||||||
|         ComponentBuilder builder = new ComponentBuilder(); |         ComponentBuilder builder = new ComponentBuilder(); | ||||||
|         builder.append( new TextComponent( "Apple, " ) ); |         builder.append( new TextComponent( "Apple, " ) ); | ||||||
|         builder.append( new TextComponent( "Orange, " ) ); |         builder.append( new TextComponent( "Orange, " ) ); | ||||||
|         builder.setCursor( -1 ); |         assertThrows( IndexOutOfBoundsException.class, () -> builder.setCursor( -1 ) ); | ||||||
|         builder.setCursor( 2 ); |         assertThrows( IndexOutOfBoundsException.class, () -> builder.setCursor( 2 ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -184,24 +184,24 @@ public class ComponentsTest | |||||||
|     { |     { | ||||||
|         TextComponent t1, t2, t3; |         TextComponent t1, t2, t3; | ||||||
|         ComponentBuilder builder = new ComponentBuilder(); |         ComponentBuilder builder = new ComponentBuilder(); | ||||||
|         Assert.assertEquals( builder.getCursor(), -1 ); |         assertEquals( builder.getCursor(), -1 ); | ||||||
|         builder.append( t1 = new TextComponent( "Apple, " ) ); |         builder.append( t1 = new TextComponent( "Apple, " ) ); | ||||||
|         Assert.assertEquals( builder.getCursor(), 0 ); |         assertEquals( builder.getCursor(), 0 ); | ||||||
|         builder.append( t2 = new TextComponent( "Orange, " ) ); |         builder.append( t2 = new TextComponent( "Orange, " ) ); | ||||||
|         builder.append( t3 = new TextComponent( "Mango, " ) ); |         builder.append( t3 = new TextComponent( "Mango, " ) ); | ||||||
|         Assert.assertEquals( builder.getCursor(), 2 ); |         assertEquals( builder.getCursor(), 2 ); | ||||||
|  |  | ||||||
|         builder.setCursor( 0 ); |         builder.setCursor( 0 ); | ||||||
|         Assert.assertEquals( builder.getCurrentComponent(), t1 ); |         assertEquals( builder.getCurrentComponent(), t1 ); | ||||||
|  |  | ||||||
|         // Test that appending new components updates the position to the new list size |         // Test that appending new components updates the position to the new list size | ||||||
|         // after having previously set it to 0 (first component) |         // after having previously set it to 0 (first component) | ||||||
|         builder.append( new TextComponent( "and Grapefruit" ) ); |         builder.append( new TextComponent( "and Grapefruit" ) ); | ||||||
|         Assert.assertEquals( builder.getCursor(), 3 ); |         assertEquals( builder.getCursor(), 3 ); | ||||||
|  |  | ||||||
|         builder.setCursor( 0 ); |         builder.setCursor( 0 ); | ||||||
|         builder.resetCursor(); |         builder.resetCursor(); | ||||||
|         Assert.assertEquals( builder.getCursor(), 3 ); |         assertEquals( builder.getCursor(), 3 ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -210,7 +210,7 @@ public class ComponentsTest | |||||||
|         String text = "§a§lHello §r§kworld§7!"; |         String text = "§a§lHello §r§kworld§7!"; | ||||||
|         BaseComponent[] components = TextComponent.fromLegacyText( text ); |         BaseComponent[] components = TextComponent.fromLegacyText( text ); | ||||||
|         BaseComponent[] builderComponents = new ComponentBuilder().append( components ).create(); |         BaseComponent[] builderComponents = new ComponentBuilder().append( components ).create(); | ||||||
|         Assert.assertArrayEquals( components, builderComponents ); |         assertArrayEquals( components, builderComponents ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /* |     /* | ||||||
| @@ -232,7 +232,7 @@ public class ComponentsTest | |||||||
|         component.setHoverEvent( event ); |         component.setHoverEvent( event ); | ||||||
|         String serialised = ComponentSerializer.toString( component ); |         String serialised = ComponentSerializer.toString( component ); | ||||||
|         BaseComponent[] deserialised = ComponentSerializer.parse( serialised ); |         BaseComponent[] deserialised = ComponentSerializer.parse( serialised ); | ||||||
|         Assert.assertEquals( TextComponent.toLegacyText( deserialised ), TextComponent.toLegacyText( component ) ); |         assertEquals( TextComponent.toLegacyText( deserialised ), TextComponent.toLegacyText( component ) ); | ||||||
|     } |     } | ||||||
|      */ |      */ | ||||||
|  |  | ||||||
| @@ -247,9 +247,9 @@ public class ComponentsTest | |||||||
|         ); |         ); | ||||||
|         TextComponent component = new TextComponent( "test" ); |         TextComponent component = new TextComponent( "test" ); | ||||||
|         component.setHoverEvent( hoverEvent ); |         component.setHoverEvent( hoverEvent ); | ||||||
|         Assert.assertEquals( component.getHoverEvent().getContents().size(), 1 ); |         assertEquals( component.getHoverEvent().getContents().size(), 1 ); | ||||||
|         Assert.assertTrue( component.getHoverEvent().getContents().get( 0 ) instanceof Text ); |         assertTrue( component.getHoverEvent().getContents().get( 0 ) instanceof Text ); | ||||||
|         Assert.assertEquals( ( (Text) component.getHoverEvent().getContents().get( 0 ) ).getValue(), advancement ); |         assertEquals( ( (Text) component.getHoverEvent().getContents().get( 0 ) ).getValue(), advancement ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -274,11 +274,11 @@ public class ComponentsTest | |||||||
|         TextComponent component = new TextComponent( "Sample text" ); |         TextComponent component = new TextComponent( "Sample text" ); | ||||||
|         component.setHoverEvent( hoverEvent ); |         component.setHoverEvent( hoverEvent ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( hoverEvent.getContents().size(), 1 ); |         assertEquals( hoverEvent.getContents().size(), 1 ); | ||||||
|         Assert.assertTrue( hoverEvent.isLegacy() ); |         assertTrue( hoverEvent.isLegacy() ); | ||||||
|         String serialized = ComponentSerializer.toString( component ); |         String serialized = ComponentSerializer.toString( component ); | ||||||
|         BaseComponent[] deserialized = ComponentSerializer.parse( serialized ); |         BaseComponent[] deserialized = ComponentSerializer.parse( serialized ); | ||||||
|         Assert.assertEquals( component.getHoverEvent(), deserialized[0].getHoverEvent() ); |         assertEquals( component.getHoverEvent(), deserialized[0].getHoverEvent() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -303,12 +303,12 @@ public class ComponentsTest | |||||||
|     { |     { | ||||||
|         TextComponent component = new TextComponent( "Sample text" ); |         TextComponent component = new TextComponent( "Sample text" ); | ||||||
|         component.setHoverEvent( hoverEvent ); |         component.setHoverEvent( hoverEvent ); | ||||||
|         Assert.assertEquals( hoverEvent.getContents().size(), 2 ); |         assertEquals( hoverEvent.getContents().size(), 2 ); | ||||||
|         Assert.assertFalse( hoverEvent.isLegacy() ); |         assertFalse( hoverEvent.isLegacy() ); | ||||||
|  |  | ||||||
|         String serialized = ComponentSerializer.toString( component ); |         String serialized = ComponentSerializer.toString( component ); | ||||||
|         T deserialized = deserializer.apply( serialized ); |         T deserialized = deserializer.apply( serialized ); | ||||||
|         Assert.assertEquals( component.getHoverEvent(), hoverEventGetter.apply( deserialized ) ); |         assertEquals( component.getHoverEvent(), hoverEventGetter.apply( deserialized ) ); | ||||||
|  |  | ||||||
|         // Test single content: |         // Test single content: | ||||||
|         String json = "{\"italic\":true,\"color\":\"gray\",\"translate\":\"chat.type.admin\",\"with\":[{\"text\":\"@\"}" |         String json = "{\"italic\":true,\"color\":\"gray\",\"translate\":\"chat.type.admin\",\"with\":[{\"text\":\"@\"}" | ||||||
| @@ -345,10 +345,10 @@ public class ComponentsTest | |||||||
|  |  | ||||||
|         TextComponent second = new TextComponent( " world" ); |         TextComponent second = new TextComponent( " world" ); | ||||||
|         second.copyFormatting( first, ComponentBuilder.FormatRetention.ALL, true ); |         second.copyFormatting( first, ComponentBuilder.FormatRetention.ALL, true ); | ||||||
|         Assert.assertEquals( first.isBold(), second.isBold() ); |         assertEquals( first.isBold(), second.isBold() ); | ||||||
|         Assert.assertEquals( first.getColor(), second.getColor() ); |         assertEquals( first.getColor(), second.getColor() ); | ||||||
|         Assert.assertEquals( first.getClickEvent(), second.getClickEvent() ); |         assertEquals( first.getClickEvent(), second.getClickEvent() ); | ||||||
|         Assert.assertEquals( first.getHoverEvent(), second.getHoverEvent() ); |         assertEquals( first.getHoverEvent(), second.getHoverEvent() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -368,7 +368,7 @@ public class ComponentsTest | |||||||
|         ComponentBuilder builder = new ComponentBuilder( "Hello " ).color( ChatColor.RED ).append( "world" ).color( ChatColor.DARK_RED ); |         ComponentBuilder builder = new ComponentBuilder( "Hello " ).color( ChatColor.RED ).append( "world" ).color( ChatColor.DARK_RED ); | ||||||
|         ComponentBuilder cloned = new ComponentBuilder( builder ); |         ComponentBuilder cloned = new ComponentBuilder( builder ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( legacyTextFunction.apply( builder ), legacyTextFunction.apply( cloned ) ); |         assertEquals( legacyTextFunction.apply( builder ), legacyTextFunction.apply( cloned ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -403,10 +403,10 @@ public class ComponentsTest | |||||||
|         ScoreComponent scoreComponent = new ScoreComponent( "myscore", "myobjective" ); |         ScoreComponent scoreComponent = new ScoreComponent( "myscore", "myobjective" ); | ||||||
|         builder.append( scoreComponent ); // non array based BaseComponent append |         builder.append( scoreComponent ); // non array based BaseComponent append | ||||||
|         T component = componentBuilder.apply( builder ); |         T component = componentBuilder.apply( builder ); | ||||||
|         Assert.assertEquals( "Hello ", extraGetter.apply( component, 0 ).toPlainText() ); |         assertEquals( "Hello ", extraGetter.apply( component, 0 ).toPlainText() ); | ||||||
|         Assert.assertEquals( textComponent.toPlainText(), extraGetter.apply( component, 1 ).toPlainText() ); |         assertEquals( textComponent.toPlainText(), extraGetter.apply( component, 1 ).toPlainText() ); | ||||||
|         Assert.assertEquals( translatableComponent.toPlainText(), extraGetter.apply( component, 2 ).toPlainText() ); |         assertEquals( translatableComponent.toPlainText(), extraGetter.apply( component, 2 ).toPlainText() ); | ||||||
|         Assert.assertEquals( scoreComponent.toPlainText(), extraGetter.apply( component, 3 ).toPlainText() ); |         assertEquals( scoreComponent.toPlainText(), extraGetter.apply( component, 3 ).toPlainText() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -416,7 +416,7 @@ public class ComponentsTest | |||||||
|         String text = ComponentSerializer.toString( component ); |         String text = ComponentSerializer.toString( component ); | ||||||
|         BaseComponent[] reparsed = ComponentSerializer.parse( text ); |         BaseComponent[] reparsed = ComponentSerializer.parse( text ); | ||||||
|  |  | ||||||
|         Assert.assertArrayEquals( component, reparsed ); |         assertArrayEquals( component, reparsed ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -456,10 +456,10 @@ public class ComponentsTest | |||||||
|  |  | ||||||
|         T component = componentBuilder.apply( builder ); |         T component = componentBuilder.apply( builder ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( extraGetter.apply( component, 1 ).getHoverEvent(), hoverEvent ); |         assertEquals( extraGetter.apply( component, 1 ).getHoverEvent(), hoverEvent ); | ||||||
|         Assert.assertEquals( extraGetter.apply( component, 1 ).getClickEvent(), clickEvent ); |         assertEquals( extraGetter.apply( component, 1 ).getClickEvent(), clickEvent ); | ||||||
|         Assert.assertEquals( "Hello world!", toPlainTextFunction.apply( component ) ); |         assertEquals( "Hello world!", toPlainTextFunction.apply( component ) ); | ||||||
|         Assert.assertEquals( expectedLegacyText, toLegacyTextFunction.apply( component ) ); |         assertEquals( expectedLegacyText, toLegacyTextFunction.apply( component ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -492,8 +492,8 @@ public class ComponentsTest | |||||||
|  |  | ||||||
|         T component = componentBuilder.apply( builder ); |         T component = componentBuilder.apply( builder ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( "Hello world!", toPlainTextFunction.apply( component ) ); |         assertEquals( "Hello world!", toPlainTextFunction.apply( component ) ); | ||||||
|         Assert.assertEquals( expectedLegacyString, toLegacyTextFunction.apply( component ) ); |         assertEquals( expectedLegacyString, toLegacyTextFunction.apply( component ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -502,8 +502,8 @@ public class ComponentsTest | |||||||
|         TextComponent textComponent = new TextComponent( "Hello world" ); |         TextComponent textComponent = new TextComponent( "Hello world" ); | ||||||
|         textComponent.setColor( ChatColor.RED ); |         textComponent.setColor( ChatColor.RED ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( "Hello world", textComponent.toPlainText() ); |         assertEquals( "Hello world", textComponent.toPlainText() ); | ||||||
|         Assert.assertEquals( ChatColor.RED + "Hello world", textComponent.toLegacyText() ); |         assertEquals( ChatColor.RED + "Hello world", textComponent.toLegacyText() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -511,25 +511,25 @@ public class ComponentsTest | |||||||
|     { |     { | ||||||
|         BaseComponent[] test1 = TextComponent.fromLegacyText( ChatColor.AQUA + "Aqua " + ChatColor.RED + ChatColor.BOLD + "RedBold" ); |         BaseComponent[] test1 = TextComponent.fromLegacyText( ChatColor.AQUA + "Aqua " + ChatColor.RED + ChatColor.BOLD + "RedBold" ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( "Aqua RedBold", BaseComponent.toPlainText( test1 ) ); |         assertEquals( "Aqua RedBold", BaseComponent.toPlainText( test1 ) ); | ||||||
|         Assert.assertEquals( ChatColor.AQUA + "Aqua " + ChatColor.RED + ChatColor.BOLD + "RedBold", BaseComponent.toLegacyText( test1 ) ); |         assertEquals( ChatColor.AQUA + "Aqua " + ChatColor.RED + ChatColor.BOLD + "RedBold", BaseComponent.toLegacyText( test1 ) ); | ||||||
|  |  | ||||||
|         BaseComponent[] test2 = TextComponent.fromLegacyText( "Text http://spigotmc.org " + ChatColor.GREEN + "google.com/test" ); |         BaseComponent[] test2 = TextComponent.fromLegacyText( "Text http://spigotmc.org " + ChatColor.GREEN + "google.com/test" ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( "Text http://spigotmc.org google.com/test", BaseComponent.toPlainText( test2 ) ); |         assertEquals( "Text http://spigotmc.org google.com/test", BaseComponent.toPlainText( test2 ) ); | ||||||
|         //The extra ChatColor instances are sometimes inserted when not needed but it doesn't change the result |         //The extra ChatColor instances are sometimes inserted when not needed but it doesn't change the result | ||||||
|         Assert.assertEquals( ChatColor.WHITE + "Text " + ChatColor.WHITE + "http://spigotmc.org" + ChatColor.WHITE |         assertEquals( ChatColor.WHITE + "Text " + ChatColor.WHITE + "http://spigotmc.org" + ChatColor.WHITE | ||||||
|                 + " " + ChatColor.GREEN + "google.com/test" + ChatColor.GREEN, BaseComponent.toLegacyText( test2 ) ); |                 + " " + ChatColor.GREEN + "google.com/test" + ChatColor.GREEN, BaseComponent.toLegacyText( test2 ) ); | ||||||
|  |  | ||||||
|         ClickEvent url1 = test2[1].getClickEvent(); |         ClickEvent url1 = test2[1].getClickEvent(); | ||||||
|         Assert.assertNotNull( url1 ); |         assertNotNull( url1 ); | ||||||
|         Assert.assertTrue( url1.getAction() == ClickEvent.Action.OPEN_URL ); |         assertTrue( url1.getAction() == ClickEvent.Action.OPEN_URL ); | ||||||
|         Assert.assertEquals( "http://spigotmc.org", url1.getValue() ); |         assertEquals( "http://spigotmc.org", url1.getValue() ); | ||||||
|  |  | ||||||
|         ClickEvent url2 = test2[3].getClickEvent(); |         ClickEvent url2 = test2[3].getClickEvent(); | ||||||
|         Assert.assertNotNull( url2 ); |         assertNotNull( url2 ); | ||||||
|         Assert.assertTrue( url2.getAction() == ClickEvent.Action.OPEN_URL ); |         assertTrue( url2.getAction() == ClickEvent.Action.OPEN_URL ); | ||||||
|         Assert.assertEquals( "http://google.com/test", url2.getValue() ); |         assertEquals( "http://google.com/test", url2.getValue() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -541,18 +541,18 @@ public class ComponentsTest | |||||||
|                 item, "5", |                 item, "5", | ||||||
|                 "thinkofdeath" ); |                 "thinkofdeath" ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( "Given Golden Sword * 5 to thinkofdeath", translatableComponent.toPlainText() ); |         assertEquals( "Given Golden Sword * 5 to thinkofdeath", translatableComponent.toPlainText() ); | ||||||
|         Assert.assertEquals( ChatColor.WHITE + "Given " + ChatColor.AQUA + "Golden Sword" + ChatColor.WHITE |         assertEquals( ChatColor.WHITE + "Given " + ChatColor.AQUA + "Golden Sword" + ChatColor.WHITE | ||||||
|                 + " * " + ChatColor.WHITE + "5" + ChatColor.WHITE + " to " + ChatColor.WHITE + "thinkofdeath", |                 + " * " + ChatColor.WHITE + "5" + ChatColor.WHITE + " to " + ChatColor.WHITE + "thinkofdeath", | ||||||
|                 translatableComponent.toLegacyText() ); |                 translatableComponent.toLegacyText() ); | ||||||
|  |  | ||||||
|         TranslatableComponent positional = new TranslatableComponent( "book.pageIndicator", "5", "50" ); |         TranslatableComponent positional = new TranslatableComponent( "book.pageIndicator", "5", "50" ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( "Page 5 of 50", positional.toPlainText() ); |         assertEquals( "Page 5 of 50", positional.toPlainText() ); | ||||||
|         Assert.assertEquals( ChatColor.WHITE + "Page " + ChatColor.WHITE + "5" + ChatColor.WHITE + " of " + ChatColor.WHITE + "50", positional.toLegacyText() ); |         assertEquals( ChatColor.WHITE + "Page " + ChatColor.WHITE + "5" + ChatColor.WHITE + " of " + ChatColor.WHITE + "50", positional.toLegacyText() ); | ||||||
|  |  | ||||||
|         TranslatableComponent one_four_two = new TranslatableComponent( "filled_map.buried_treasure" ); |         TranslatableComponent one_four_two = new TranslatableComponent( "filled_map.buried_treasure" ); | ||||||
|         Assert.assertEquals( "Buried Treasure Map", one_four_two.toPlainText() ); |         assertEquals( "Buried Treasure Map", one_four_two.toPlainText() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -586,8 +586,8 @@ public class ComponentsTest | |||||||
|                 append( "World" ).bold( true ).color( ChatColor.BLUE ). |                 append( "World" ).bold( true ).color( ChatColor.BLUE ). | ||||||
|                 append( "!" ).color( ChatColor.YELLOW ) ); |                 append( "!" ).color( ChatColor.YELLOW ) ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( "Hello World!", toPlainTextFunction.apply( component ) ); |         assertEquals( "Hello World!", toPlainTextFunction.apply( component ) ); | ||||||
|         Assert.assertEquals( expectedLegacyString, toLegacyTextFunction.apply( component ) ); |         assertEquals( expectedLegacyString, toLegacyTextFunction.apply( component ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -613,8 +613,8 @@ public class ComponentsTest | |||||||
|         T component = componentBuilder.apply( new ComponentBuilder( "Hello " ).color( ChatColor.RED ) |         T component = componentBuilder.apply( new ComponentBuilder( "Hello " ).color( ChatColor.RED ) | ||||||
|                 .append( "World" ).reset() ); |                 .append( "World" ).reset() ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( ChatColor.RED, extraGetter.apply( component, 0 ).getColor() ); |         assertEquals( ChatColor.RED, extraGetter.apply( component, 0 ).getColor() ); | ||||||
|         Assert.assertEquals( ChatColor.WHITE, extraGetter.apply( component, 1 ).getColor() ); |         assertEquals( ChatColor.WHITE, extraGetter.apply( component, 1 ).getColor() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -640,41 +640,41 @@ public class ComponentsTest | |||||||
|         T noneRetention = componentBuilder.apply( new ComponentBuilder( "Hello " ).color( ChatColor.RED ) |         T noneRetention = componentBuilder.apply( new ComponentBuilder( "Hello " ).color( ChatColor.RED ) | ||||||
|                 .append( "World", ComponentBuilder.FormatRetention.NONE ) ); |                 .append( "World", ComponentBuilder.FormatRetention.NONE ) ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( ChatColor.RED, extraGetter.apply( noneRetention, 0 ).getColor() ); |         assertEquals( ChatColor.RED, extraGetter.apply( noneRetention, 0 ).getColor() ); | ||||||
|         Assert.assertEquals( ChatColor.WHITE, extraGetter.apply( noneRetention, 1 ).getColor() ); |         assertEquals( ChatColor.WHITE, extraGetter.apply( noneRetention, 1 ).getColor() ); | ||||||
|  |  | ||||||
|         HoverEvent testEvent = new HoverEvent( HoverEvent.Action.SHOW_TEXT, new Text( new ComponentBuilder( "test" ).build() ) ); |         HoverEvent testEvent = new HoverEvent( HoverEvent.Action.SHOW_TEXT, new Text( new ComponentBuilder( "test" ).build() ) ); | ||||||
|  |  | ||||||
|         T formattingRetention = componentBuilder.apply( new ComponentBuilder( "Hello " ).color( ChatColor.RED ) |         T formattingRetention = componentBuilder.apply( new ComponentBuilder( "Hello " ).color( ChatColor.RED ) | ||||||
|                 .event( testEvent ).append( "World", ComponentBuilder.FormatRetention.FORMATTING ) ); |                 .event( testEvent ).append( "World", ComponentBuilder.FormatRetention.FORMATTING ) ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( ChatColor.RED, extraGetter.apply( formattingRetention, 0 ).getColor() ); |         assertEquals( ChatColor.RED, extraGetter.apply( formattingRetention, 0 ).getColor() ); | ||||||
|         Assert.assertEquals( testEvent, extraGetter.apply( formattingRetention, 0 ).getHoverEvent() ); |         assertEquals( testEvent, extraGetter.apply( formattingRetention, 0 ).getHoverEvent() ); | ||||||
|         Assert.assertEquals( ChatColor.RED, extraGetter.apply( formattingRetention, 1 ).getColor() ); |         assertEquals( ChatColor.RED, extraGetter.apply( formattingRetention, 1 ).getColor() ); | ||||||
|         Assert.assertNull( extraGetter.apply( formattingRetention, 1 ).getHoverEvent() ); |         assertNull( extraGetter.apply( formattingRetention, 1 ).getHoverEvent() ); | ||||||
|  |  | ||||||
|         ClickEvent testClickEvent = new ClickEvent( ClickEvent.Action.OPEN_URL, "http://www.example.com" ); |         ClickEvent testClickEvent = new ClickEvent( ClickEvent.Action.OPEN_URL, "http://www.example.com" ); | ||||||
|  |  | ||||||
|         T eventRetention = componentBuilder.apply( new ComponentBuilder( "Hello " ).color( ChatColor.RED ) |         T eventRetention = componentBuilder.apply( new ComponentBuilder( "Hello " ).color( ChatColor.RED ) | ||||||
|                 .event( testEvent ).event( testClickEvent ).append( "World", ComponentBuilder.FormatRetention.EVENTS ) ); |                 .event( testEvent ).event( testClickEvent ).append( "World", ComponentBuilder.FormatRetention.EVENTS ) ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( ChatColor.RED, extraGetter.apply( eventRetention, 0 ).getColor() ); |         assertEquals( ChatColor.RED, extraGetter.apply( eventRetention, 0 ).getColor() ); | ||||||
|         Assert.assertEquals( testEvent, extraGetter.apply( eventRetention, 0 ).getHoverEvent() ); |         assertEquals( testEvent, extraGetter.apply( eventRetention, 0 ).getHoverEvent() ); | ||||||
|         Assert.assertEquals( testClickEvent, extraGetter.apply( eventRetention, 0 ).getClickEvent() ); |         assertEquals( testClickEvent, extraGetter.apply( eventRetention, 0 ).getClickEvent() ); | ||||||
|         Assert.assertEquals( ChatColor.WHITE, extraGetter.apply( eventRetention, 1 ).getColor() ); |         assertEquals( ChatColor.WHITE, extraGetter.apply( eventRetention, 1 ).getColor() ); | ||||||
|         Assert.assertEquals( testEvent, extraGetter.apply( eventRetention, 1 ).getHoverEvent() ); |         assertEquals( testEvent, extraGetter.apply( eventRetention, 1 ).getHoverEvent() ); | ||||||
|         Assert.assertEquals( testClickEvent, extraGetter.apply( eventRetention, 1 ).getClickEvent() ); |         assertEquals( testClickEvent, extraGetter.apply( eventRetention, 1 ).getClickEvent() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test(expected = IllegalArgumentException.class) |     @Test | ||||||
|     public void testLoopSimple() |     public void testLoopSimple() | ||||||
|     { |     { | ||||||
|         TextComponent component = new TextComponent( "Testing" ); |         TextComponent component = new TextComponent( "Testing" ); | ||||||
|         component.addExtra( component ); |         component.addExtra( component ); | ||||||
|         ComponentSerializer.toString( component ); |         assertThrows( IllegalArgumentException.class, () -> ComponentSerializer.toString( component ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test(expected = IllegalArgumentException.class) |     @Test | ||||||
|     public void testLoopComplex() |     public void testLoopComplex() | ||||||
|     { |     { | ||||||
|         TextComponent a = new TextComponent( "A" ); |         TextComponent a = new TextComponent( "A" ); | ||||||
| @@ -685,7 +685,7 @@ public class ComponentsTest | |||||||
|         a.addExtra( b ); |         a.addExtra( b ); | ||||||
|         b.addExtra( c ); |         b.addExtra( c ); | ||||||
|         c.addExtra( a ); |         c.addExtra( a ); | ||||||
|         ComponentSerializer.toString( a ); |         assertThrows( IllegalArgumentException.class, () -> ComponentSerializer.toString( a ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -699,7 +699,7 @@ public class ComponentsTest | |||||||
|         ComponentSerializer.toString( a ); |         ComponentSerializer.toString( a ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test(expected = IllegalArgumentException.class) |     @Test | ||||||
|     public void testRepeatedError() |     public void testRepeatedError() | ||||||
|     { |     { | ||||||
|         TextComponent a = new TextComponent( "A" ); |         TextComponent a = new TextComponent( "A" ); | ||||||
| @@ -711,7 +711,7 @@ public class ComponentsTest | |||||||
|         a.addExtra( c ); |         a.addExtra( c ); | ||||||
|         c.addExtra( a ); |         c.addExtra( a ); | ||||||
|         a.addExtra( b ); |         a.addExtra( b ); | ||||||
|         ComponentSerializer.toString( a ); |         assertThrows( IllegalArgumentException.class, () -> ComponentSerializer.toString( a ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -736,7 +736,7 @@ public class ComponentsTest | |||||||
|         String emptyLegacyText = fromAndToLegacyText( "" ); |         String emptyLegacyText = fromAndToLegacyText( "" ); | ||||||
|  |  | ||||||
|         // all invalid color codes and the trailing '§' should be ignored |         // all invalid color codes and the trailing '§' should be ignored | ||||||
|         Assert.assertEquals( emptyLegacyText, invalidColorCodesLegacyText ); |         assertEquals( emptyLegacyText, invalidColorCodesLegacyText ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -745,12 +745,12 @@ public class ComponentsTest | |||||||
|         String text = "§a"; |         String text = "§a"; | ||||||
|  |  | ||||||
|         BaseComponent[] converted = TextComponent.fromLegacyText( text ); |         BaseComponent[] converted = TextComponent.fromLegacyText( text ); | ||||||
|         Assert.assertEquals( ChatColor.GREEN, converted[0].getColor() ); |         assertEquals( ChatColor.GREEN, converted[0].getColor() ); | ||||||
|  |  | ||||||
|         String roundtripLegacyText = BaseComponent.toLegacyText( converted ); |         String roundtripLegacyText = BaseComponent.toLegacyText( converted ); | ||||||
|  |  | ||||||
|         // color code should not be lost during conversion |         // color code should not be lost during conversion | ||||||
|         Assert.assertEquals( text, roundtripLegacyText ); |         assertEquals( text, roundtripLegacyText ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -762,7 +762,7 @@ public class ComponentsTest | |||||||
|         TextComponent second = new TextComponent( "Hello, " ); |         TextComponent second = new TextComponent( "Hello, " ); | ||||||
|         second.addExtra( new TextComponent( "World!" ) ); |         second.addExtra( new TextComponent( "World!" ) ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( first, second ); |         assertEquals( first, second ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -774,7 +774,7 @@ public class ComponentsTest | |||||||
|         TextComponent second = new TextComponent( "Hello, " ); |         TextComponent second = new TextComponent( "Hello, " ); | ||||||
|         second.addExtra( new TextComponent( "World!" ) ); |         second.addExtra( new TextComponent( "World!" ) ); | ||||||
|  |  | ||||||
|         Assert.assertNotEquals( first, second ); |         assertNotEquals( first, second ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -785,7 +785,7 @@ public class ComponentsTest | |||||||
|  |  | ||||||
|         BaseComponent[] reColored = TextComponent.fromLegacyText( legacy ); |         BaseComponent[] reColored = TextComponent.fromLegacyText( legacy ); | ||||||
|  |  | ||||||
|         Assert.assertArrayEquals( hexColored, reColored ); |         assertArrayEquals( hexColored, reColored ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -817,18 +817,18 @@ public class ComponentsTest | |||||||
|  |  | ||||||
|         String expected = "{\"extra\":[{\"underlined\":true,\"color\":\"dark_red\",\"text\":\"44444\"},{\"color\":" |         String expected = "{\"extra\":[{\"underlined\":true,\"color\":\"dark_red\",\"text\":\"44444\"},{\"color\":" | ||||||
|                 + "\"white\",\"text\":\"dd\"},{\"bold\":true,\"color\":\"gold\",\"text\":\"6666\"}],\"text\":\"\"}"; |                 + "\"white\",\"text\":\"dd\"},{\"bold\":true,\"color\":\"gold\",\"text\":\"6666\"}],\"text\":\"\"}"; | ||||||
|         Assert.assertEquals( expected, ComponentSerializer.toString( a ) ); |         assertEquals( expected, ComponentSerializer.toString( a ) ); | ||||||
|  |  | ||||||
|         builder.append( a ); |         builder.append( a ); | ||||||
|  |  | ||||||
|         String test1 = componentSerializer.apply( componentBuilder.apply( builder ) ); |         String test1 = componentSerializer.apply( componentBuilder.apply( builder ) ); | ||||||
|         Assert.assertEquals( expected, test1 ); |         assertEquals( expected, test1 ); | ||||||
|  |  | ||||||
|         BaseComponent[] b = TextComponent.fromLegacyText( "§rrrrr" ); |         BaseComponent[] b = TextComponent.fromLegacyText( "§rrrrr" ); | ||||||
|         builder.append( b ); |         builder.append( b ); | ||||||
|  |  | ||||||
|         String test2 = componentSerializer.apply( componentBuilder.apply( builder ) ); |         String test2 = componentSerializer.apply( componentBuilder.apply( builder ) ); | ||||||
|         Assert.assertEquals( |         assertEquals( | ||||||
|                 "{\"extra\":[{\"underlined\":true,\"color\":\"dark_red\",\"text\":\"44444\"}," |                 "{\"extra\":[{\"underlined\":true,\"color\":\"dark_red\",\"text\":\"44444\"}," | ||||||
|                         + "{\"color\":\"white\",\"text\":\"dd\"},{\"bold\":true,\"color\":\"gold\",\"text\":\"6666\"}," |                         + "{\"color\":\"white\",\"text\":\"dd\"},{\"bold\":true,\"color\":\"gold\",\"text\":\"6666\"}," | ||||||
|                         + "{\"color\":\"white\",\"text\":\"rrrr\"}],\"text\":\"\"}", |                         + "{\"color\":\"white\",\"text\":\"rrrr\"}],\"text\":\"\"}", | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| package net.md_5.bungee.api.chat; | package net.md_5.bungee.api.chat; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import net.md_5.bungee.chat.ComponentSerializer; | import net.md_5.bungee.chat.ComponentSerializer; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.api.Test; | ||||||
| import org.junit.Test; |  | ||||||
|  |  | ||||||
| public class TranslatableComponentTest | public class TranslatableComponentTest | ||||||
| { | { | ||||||
| @@ -11,8 +11,8 @@ public class TranslatableComponentTest | |||||||
|     public void testMissingPlaceholdersAdded() |     public void testMissingPlaceholdersAdded() | ||||||
|     { |     { | ||||||
|         TranslatableComponent testComponent = new TranslatableComponent( "Test string with %s placeholders: %s", 2, "aoeu" ); |         TranslatableComponent testComponent = new TranslatableComponent( "Test string with %s placeholders: %s", 2, "aoeu" ); | ||||||
|         Assert.assertEquals( "Test string with 2 placeholders: aoeu", testComponent.toPlainText() ); |         assertEquals( "Test string with 2 placeholders: aoeu", testComponent.toPlainText() ); | ||||||
|         Assert.assertEquals( "§fTest string with §f2§f placeholders: §faoeu", testComponent.toLegacyText() ); |         assertEquals( "§fTest string with §f2§f placeholders: §faoeu", testComponent.toLegacyText() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -22,7 +22,7 @@ public class TranslatableComponentTest | |||||||
|         String jsonString = ComponentSerializer.toString( testComponent ); |         String jsonString = ComponentSerializer.toString( testComponent ); | ||||||
|         BaseComponent[] baseComponents = ComponentSerializer.parse( jsonString ); |         BaseComponent[] baseComponents = ComponentSerializer.parse( jsonString ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( "Test string with a placeholder", TextComponent.toPlainText( baseComponents ) ); |         assertEquals( "Test string with a placeholder", TextComponent.toPlainText( baseComponents ) ); | ||||||
|         Assert.assertEquals( "§fTest string with §fa§f placeholder", TextComponent.toLegacyText( baseComponents ) ); |         assertEquals( "§fTest string with §fa§f placeholder", TextComponent.toLegacyText( baseComponents ) ); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -36,7 +36,6 @@ | |||||||
|         <module name="SuppressWarningsHolder"/> |         <module name="SuppressWarningsHolder"/> | ||||||
|  |  | ||||||
|         <!-- See http://checkstyle.sourceforge.net/config_imports.html --> |         <!-- See http://checkstyle.sourceforge.net/config_imports.html --> | ||||||
|         <module name="AvoidStarImport"/> |  | ||||||
|         <module name="ImportOrder"> |         <module name="ImportOrder"> | ||||||
|             <property name="option" value="above"/> |             <property name="option" value="above"/> | ||||||
|             <property name="ordered" value="true"/> |             <property name="ordered" value="true"/> | ||||||
|   | |||||||
| @@ -1,30 +1,25 @@ | |||||||
| package net.md_5.bungee.config; | package net.md_5.bungee.config; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import java.io.StringReader; | import java.io.StringReader; | ||||||
| import java.io.StringWriter; | import java.io.StringWriter; | ||||||
| import java.util.Arrays; |  | ||||||
| import java.util.Collections; | import java.util.Collections; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  | import java.util.stream.Stream; | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.params.ParameterizedTest; | ||||||
| import org.junit.Test; | import org.junit.jupiter.params.provider.Arguments; | ||||||
| import org.junit.runner.RunWith; | import org.junit.jupiter.params.provider.MethodSource; | ||||||
| import org.junit.runners.Parameterized; |  | ||||||
| import org.junit.runners.Parameterized.Parameters; |  | ||||||
|  |  | ||||||
| @RequiredArgsConstructor | @RequiredArgsConstructor | ||||||
| @RunWith(Parameterized.class) |  | ||||||
| public class CompoundConfigurationTest | public class CompoundConfigurationTest | ||||||
| { | { | ||||||
|  |  | ||||||
|     @Parameters(name = "{0}") |     public static Stream<Arguments> data() | ||||||
|     public static Iterable<Object[]> data() |  | ||||||
|     { |  | ||||||
|         // CHECKSTYLE:OFF |  | ||||||
|         return Arrays.asList( new Object[][] |  | ||||||
|         { |  | ||||||
|     { |     { | ||||||
|  |         return Stream.of( | ||||||
|  |                 Arguments.of( | ||||||
|                         // provider |                         // provider | ||||||
|                         YamlConfiguration.class, |                         YamlConfiguration.class, | ||||||
|                         // testDocument |                         // testDocument | ||||||
| @@ -73,8 +68,8 @@ public class CompoundConfigurationTest | |||||||
|                         + "null:\n" |                         + "null:\n" | ||||||
|                         + "    null: object\n" |                         + "    null: object\n" | ||||||
|                         + "    object: null\n" |                         + "    object: null\n" | ||||||
|             }, |                 ), | ||||||
|             { |                 Arguments.of( | ||||||
|                         // provider |                         // provider | ||||||
|                         JsonConfiguration.class, |                         JsonConfiguration.class, | ||||||
|                         // testDocument |                         // testDocument | ||||||
| @@ -131,18 +126,13 @@ public class CompoundConfigurationTest | |||||||
|                         + "    \"object\": null\n" |                         + "    \"object\": null\n" | ||||||
|                         + "  }\n" |                         + "  }\n" | ||||||
|                         + "}" |                         + "}" | ||||||
|  |                 ) | ||||||
|  |         ); | ||||||
|     } |     } | ||||||
|         } ); |  | ||||||
|         // CHECKSTYLE:ON |  | ||||||
|     } |  | ||||||
|     // |  | ||||||
|     private final Class<? extends ConfigurationProvider> provider; |  | ||||||
|     private final String testDocument; |  | ||||||
|     private final String numberTest; |  | ||||||
|     private final String nullTest; |  | ||||||
|  |  | ||||||
|     @Test |     @ParameterizedTest | ||||||
|     public void testConfig() throws Exception |     @MethodSource("data") | ||||||
|  |     public void testConfig(Class<? extends ConfigurationProvider> provider, String testDocument, String numberTest, String nullTest) throws Exception | ||||||
|     { |     { | ||||||
|         Configuration conf = ConfigurationProvider.getProvider( provider ).load( testDocument ); |         Configuration conf = ConfigurationProvider.getProvider( provider ).load( testDocument ); | ||||||
|         testSection( conf ); |         testSection( conf ); | ||||||
| @@ -151,7 +141,7 @@ public class CompoundConfigurationTest | |||||||
|         ConfigurationProvider.getProvider( provider ).save( conf, sw ); |         ConfigurationProvider.getProvider( provider ).save( conf, sw ); | ||||||
|  |  | ||||||
|         // Check nulls were saved, see #1094 |         // Check nulls were saved, see #1094 | ||||||
|         Assert.assertFalse( "Config contains null", sw.toString().contains( "null" ) ); |         assertFalse( sw.toString().contains( "null" ), "Config contains null" ); | ||||||
|  |  | ||||||
|         conf = ConfigurationProvider.getProvider( provider ).load( new StringReader( sw.toString() ) ); |         conf = ConfigurationProvider.getProvider( provider ).load( new StringReader( sw.toString() ) ); | ||||||
|         conf.set( "receipt", "Oz-Ware Purchase Invoice" ); // Add it back |         conf.set( "receipt", "Oz-Ware Purchase Invoice" ); // Add it back | ||||||
| @@ -160,37 +150,38 @@ public class CompoundConfigurationTest | |||||||
|  |  | ||||||
|     private void testSection(Configuration conf) |     private void testSection(Configuration conf) | ||||||
|     { |     { | ||||||
|         Assert.assertEquals( "receipt", "Oz-Ware Purchase Invoice", conf.getString( "receipt" ) ); |         assertEquals( "Oz-Ware Purchase Invoice", conf.getString( "receipt" ), "receipt" ); | ||||||
|         // Assert.assertEquals( "date", "2012-08-06", conf.get( "date" ).toString() ); |         // assertEquals( "2012-08-06", conf.get( "date" ).toString(), "date" ); | ||||||
|  |  | ||||||
|         Configuration customer = conf.getSection( "customer" ); |         Configuration customer = conf.getSection( "customer" ); | ||||||
|         Assert.assertEquals( "customer.given", "Dorothy", customer.getString( "given" ) ); |         assertEquals( "Dorothy", customer.getString( "given" ), "customer.given" ); | ||||||
|         Assert.assertEquals( "customer.given", "Dorothy", conf.getString( "customer.given" ) ); |         assertEquals( "Dorothy", conf.getString( "customer.given" ), "customer.given" ); | ||||||
|  |  | ||||||
|         List items = conf.getList( "items" ); |         List items = conf.getList( "items" ); | ||||||
|         Map item = (Map) items.get( 0 ); |         Map item = (Map) items.get( 0 ); | ||||||
|         Assert.assertEquals( "items[0].part_no", "A4786", item.get( "part_no" ) ); |         assertEquals( "A4786", item.get( "part_no" ), "items[0].part_no" ); | ||||||
|  |  | ||||||
|         conf.set( "receipt", null ); |         conf.set( "receipt", null ); | ||||||
|         Assert.assertEquals( null, conf.get( "receipt" ) ); |         assertEquals( null, conf.get( "receipt" ) ); | ||||||
|         Assert.assertEquals( "foo", conf.get( "receipt", "foo" ) ); |         assertEquals( "foo", conf.get( "receipt", "foo" ) ); | ||||||
|  |  | ||||||
|         Configuration newSection = conf.getSection( "new.section" ); |         Configuration newSection = conf.getSection( "new.section" ); | ||||||
|         newSection.set( "value", "foo" ); |         newSection.set( "value", "foo" ); | ||||||
|         Assert.assertEquals( "foo", conf.get( "new.section.value" ) ); |         assertEquals( "foo", conf.get( "new.section.value" ) ); | ||||||
|  |  | ||||||
|         conf.set( "other.new.section", "bar" ); |         conf.set( "other.new.section", "bar" ); | ||||||
|         Assert.assertEquals( "bar", conf.get( "other.new.section" ) ); |         assertEquals( "bar", conf.get( "other.new.section" ) ); | ||||||
|  |  | ||||||
|         Assert.assertTrue( conf.contains( "customer.given" ) ); |         assertTrue( conf.contains( "customer.given" ) ); | ||||||
|         Assert.assertTrue( customer.contains( "given" ) ); |         assertTrue( customer.contains( "given" ) ); | ||||||
|  |  | ||||||
|         Assert.assertFalse( conf.contains( "customer.foo" ) ); |         assertFalse( conf.contains( "customer.foo" ) ); | ||||||
|         Assert.assertFalse( customer.contains( "foo" ) ); |         assertFalse( customer.contains( "foo" ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @ParameterizedTest | ||||||
|     public void testNumberedKeys() |     @MethodSource("data") | ||||||
|  |     public void testNumberedKeys(Class<? extends ConfigurationProvider> provider, String testDocument, String numberTest, String nullTest) | ||||||
|     { |     { | ||||||
|         Configuration conf = ConfigurationProvider.getProvider( provider ).load( numberTest ); |         Configuration conf = ConfigurationProvider.getProvider( provider ).load( numberTest ); | ||||||
|  |  | ||||||
| @@ -201,29 +192,31 @@ public class CompoundConfigurationTest | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @ParameterizedTest | ||||||
|     public void testNull() |     @MethodSource("data") | ||||||
|  |     public void testNull(Class<? extends ConfigurationProvider> provider, String testDocument, String numberTest, String nullTest) | ||||||
|     { |     { | ||||||
|         Configuration conf = ConfigurationProvider.getProvider( provider ).load( nullTest ); |         Configuration conf = ConfigurationProvider.getProvider( provider ).load( nullTest ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( "object", conf.get( "null.null" ) ); |         assertEquals( "object", conf.get( "null.null" ) ); | ||||||
|         Assert.assertEquals( "object", conf.getSection( "null" ).get( "null" ) ); |         assertEquals( "object", conf.getSection( "null" ).get( "null" ) ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( null, conf.get( "null.object" ) ); |         assertEquals( null, conf.get( "null.object" ) ); | ||||||
|         Assert.assertEquals( "", conf.getString( "null.object" ) ); |         assertEquals( "", conf.getString( "null.object" ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @ParameterizedTest | ||||||
|     public void testMapAddition() |     @MethodSource("data") | ||||||
|  |     public void testMapAddition(Class<? extends ConfigurationProvider> provider, String testDocument, String numberTest, String nullTest) | ||||||
|     { |     { | ||||||
|         Configuration conf = ConfigurationProvider.getProvider( provider ).load( testDocument ); |         Configuration conf = ConfigurationProvider.getProvider( provider ).load( testDocument ); | ||||||
|  |  | ||||||
|         conf.set( "addition", Collections.singletonMap( "foo", "bar" ) ); |         conf.set( "addition", Collections.singletonMap( "foo", "bar" ) ); | ||||||
|  |  | ||||||
|         // Order matters |         // Order matters | ||||||
|         Assert.assertEquals( "bar", conf.getSection( "addition" ).getString( "foo" ) ); |         assertEquals( "bar", conf.getSection( "addition" ).getString( "foo" ) ); | ||||||
|         Assert.assertEquals( "bar", conf.getString( "addition.foo" ) ); |         assertEquals( "bar", conf.getString( "addition.foo" ) ); | ||||||
|  |  | ||||||
|         Assert.assertTrue( conf.get( "addition" ) instanceof Configuration ); |         assertTrue( conf.get( "addition" ) instanceof Configuration ); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| package net.md_5.bungee.config; | package net.md_5.bungee.config; | ||||||
|  |  | ||||||
| import org.junit.Assert; | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import org.junit.Test; | import org.junit.jupiter.api.Test; | ||||||
|  |  | ||||||
| public class DefaultConfigurationTest | public class DefaultConfigurationTest | ||||||
| { | { | ||||||
| @@ -16,8 +16,8 @@ public class DefaultConfigurationTest | |||||||
|  |  | ||||||
|         Configuration actualConfig = new Configuration( defaultConfig ); |         Configuration actualConfig = new Configuration( defaultConfig ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( 10, actualConfig.getInt( "setting" ) ); |         assertEquals( 10, actualConfig.getInt( "setting" ) ); | ||||||
|         Assert.assertEquals( 11, actualConfig.getInt( "nested.setting" ) ); |         assertEquals( 11, actualConfig.getInt( "nested.setting" ) ); | ||||||
|         Assert.assertEquals( 12, actualConfig.getInt( "double.nested.setting" ) ); |         assertEquals( 12, actualConfig.getInt( "double.nested.setting" ) ); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| package net.md_5.bungee.event; | package net.md_5.bungee.event; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import java.util.concurrent.CountDownLatch; | import java.util.concurrent.CountDownLatch; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.api.Test; | ||||||
| import org.junit.Test; |  | ||||||
|  |  | ||||||
| public class EventBusTest | public class EventBusTest | ||||||
| { | { | ||||||
| @@ -15,14 +15,14 @@ public class EventBusTest | |||||||
|     { |     { | ||||||
|         bus.register( this ); |         bus.register( this ); | ||||||
|         bus.post( new FirstEvent() ); |         bus.post( new FirstEvent() ); | ||||||
|         Assert.assertEquals( 0, latch.getCount() ); |         assertEquals( 0, latch.getCount() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @EventHandler |     @EventHandler | ||||||
|     public void firstListener(FirstEvent event) |     public void firstListener(FirstEvent event) | ||||||
|     { |     { | ||||||
|         bus.post( new SecondEvent() ); |         bus.post( new SecondEvent() ); | ||||||
|         Assert.assertEquals( 1, latch.getCount() ); |         assertEquals( 1, latch.getCount() ); | ||||||
|         latch.countDown(); |         latch.countDown(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| package net.md_5.bungee.event; | package net.md_5.bungee.event; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import java.util.concurrent.CountDownLatch; | import java.util.concurrent.CountDownLatch; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.api.Test; | ||||||
| import org.junit.Test; |  | ||||||
|  |  | ||||||
| public class EventPriorityTest | public class EventPriorityTest | ||||||
| { | { | ||||||
| @@ -16,41 +16,41 @@ public class EventPriorityTest | |||||||
|         bus.register( this ); |         bus.register( this ); | ||||||
|         bus.register( new EventPriorityListenerPartner() ); |         bus.register( new EventPriorityListenerPartner() ); | ||||||
|         bus.post( new PriorityTestEvent() ); |         bus.post( new PriorityTestEvent() ); | ||||||
|         Assert.assertEquals( 0, latch.getCount() ); |         assertEquals( 0, latch.getCount() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @EventHandler(priority = Byte.MIN_VALUE) |     @EventHandler(priority = Byte.MIN_VALUE) | ||||||
|     public void onMinPriority(PriorityTestEvent event) |     public void onMinPriority(PriorityTestEvent event) | ||||||
|     { |     { | ||||||
|         Assert.assertEquals( 7, latch.getCount() ); |         assertEquals( 7, latch.getCount() ); | ||||||
|         latch.countDown(); |         latch.countDown(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @EventHandler(priority = EventPriority.LOWEST) |     @EventHandler(priority = EventPriority.LOWEST) | ||||||
|     public void onLowestPriority(PriorityTestEvent event) |     public void onLowestPriority(PriorityTestEvent event) | ||||||
|     { |     { | ||||||
|         Assert.assertEquals( 6, latch.getCount() ); |         assertEquals( 6, latch.getCount() ); | ||||||
|         latch.countDown(); |         latch.countDown(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @EventHandler |     @EventHandler | ||||||
|     public void onNormalPriority(PriorityTestEvent event) |     public void onNormalPriority(PriorityTestEvent event) | ||||||
|     { |     { | ||||||
|         Assert.assertEquals( 4, latch.getCount() ); |         assertEquals( 4, latch.getCount() ); | ||||||
|         latch.countDown(); |         latch.countDown(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @EventHandler(priority = EventPriority.HIGHEST) |     @EventHandler(priority = EventPriority.HIGHEST) | ||||||
|     public void onHighestPriority(PriorityTestEvent event) |     public void onHighestPriority(PriorityTestEvent event) | ||||||
|     { |     { | ||||||
|         Assert.assertEquals( 2, latch.getCount() ); |         assertEquals( 2, latch.getCount() ); | ||||||
|         latch.countDown(); |         latch.countDown(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @EventHandler(priority = Byte.MAX_VALUE) |     @EventHandler(priority = Byte.MAX_VALUE) | ||||||
|     public void onMaxPriority(PriorityTestEvent event) |     public void onMaxPriority(PriorityTestEvent event) | ||||||
|     { |     { | ||||||
|         Assert.assertEquals( 1, latch.getCount() ); |         assertEquals( 1, latch.getCount() ); | ||||||
|         latch.countDown(); |         latch.countDown(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -64,14 +64,14 @@ public class EventPriorityTest | |||||||
|         @EventHandler(priority = EventPriority.HIGH) |         @EventHandler(priority = EventPriority.HIGH) | ||||||
|         public void onHighPriority(PriorityTestEvent event) |         public void onHighPriority(PriorityTestEvent event) | ||||||
|         { |         { | ||||||
|             Assert.assertEquals( 3, latch.getCount() ); |             assertEquals( 3, latch.getCount() ); | ||||||
|             latch.countDown(); |             latch.countDown(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         @EventHandler(priority = EventPriority.LOW) |         @EventHandler(priority = EventPriority.LOW) | ||||||
|         public void onLowPriority(PriorityTestEvent event) |         public void onLowPriority(PriorityTestEvent event) | ||||||
|         { |         { | ||||||
|             Assert.assertEquals( 5, latch.getCount() ); |             assertEquals( 5, latch.getCount() ); | ||||||
|             latch.countDown(); |             latch.countDown(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| package net.md_5.bungee.event; | package net.md_5.bungee.event; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import java.util.concurrent.CountDownLatch; | import java.util.concurrent.CountDownLatch; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.api.Test; | ||||||
| import org.junit.Test; |  | ||||||
|  |  | ||||||
| public class SubclassTest extends EventBusTest | public class SubclassTest extends EventBusTest | ||||||
| { | { | ||||||
| @@ -14,13 +14,13 @@ public class SubclassTest extends EventBusTest | |||||||
|     public void testNestedEvents() |     public void testNestedEvents() | ||||||
|     { |     { | ||||||
|         super.testNestedEvents(); |         super.testNestedEvents(); | ||||||
|         Assert.assertEquals( 0, latch.getCount() ); |         assertEquals( 0, latch.getCount() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @EventHandler |     @EventHandler | ||||||
|     protected void extraListener(FirstEvent event) |     protected void extraListener(FirstEvent event) | ||||||
|     { |     { | ||||||
|         Assert.assertEquals( 1, latch.getCount() ); |         assertEquals( 1, latch.getCount() ); | ||||||
|         latch.countDown(); |         latch.countDown(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| package net.md_5.bungee.event; | package net.md_5.bungee.event; | ||||||
|  |  | ||||||
| import org.junit.Assert; | import static org.junit.jupiter.api.Assertions.fail; | ||||||
| import org.junit.Test; | import org.junit.jupiter.api.Test; | ||||||
|  |  | ||||||
| public class UnregisteringListenerTest | public class UnregisteringListenerTest | ||||||
| { | { | ||||||
| @@ -19,7 +19,7 @@ public class UnregisteringListenerTest | |||||||
|     @EventHandler |     @EventHandler | ||||||
|     public void onEvent(TestEvent evt) |     public void onEvent(TestEvent evt) | ||||||
|     { |     { | ||||||
|         Assert.fail( "Event listener wasn't unregistered" ); |         fail( "Event listener wasn't unregistered" ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static class TestEvent |     public static class TestEvent | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| package net.md_5.bungee; | package net.md_5.bungee; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import io.netty.buffer.ByteBuf; | import io.netty.buffer.ByteBuf; | ||||||
| import io.netty.buffer.Unpooled; | import io.netty.buffer.Unpooled; | ||||||
| import java.util.Random; | import java.util.Random; | ||||||
| @@ -9,12 +10,11 @@ import net.md_5.bungee.jni.NativeCode; | |||||||
| import net.md_5.bungee.jni.cipher.BungeeCipher; | import net.md_5.bungee.jni.cipher.BungeeCipher; | ||||||
| import net.md_5.bungee.jni.cipher.JavaCipher; | import net.md_5.bungee.jni.cipher.JavaCipher; | ||||||
| import net.md_5.bungee.jni.cipher.NativeCipher; | import net.md_5.bungee.jni.cipher.NativeCipher; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.api.MethodOrderer; | ||||||
| import org.junit.FixMethodOrder; | import org.junit.jupiter.api.Test; | ||||||
| import org.junit.Test; | import org.junit.jupiter.api.TestMethodOrder; | ||||||
| import org.junit.runners.MethodSorters; |  | ||||||
|  |  | ||||||
| @FixMethodOrder(MethodSorters.NAME_ASCENDING) | @TestMethodOrder(MethodOrderer.MethodName.class) | ||||||
| public class NativeCipherTest | public class NativeCipherTest | ||||||
| { | { | ||||||
|  |  | ||||||
| @@ -34,7 +34,7 @@ public class NativeCipherTest | |||||||
|         if ( NativeCode.isSupported() ) |         if ( NativeCode.isSupported() ) | ||||||
|         { |         { | ||||||
|             boolean loaded = factory.load(); |             boolean loaded = factory.load(); | ||||||
|             Assert.assertTrue( "Native cipher failed to load!", loaded ); |             assertTrue( loaded, "Native cipher failed to load!" ); | ||||||
|  |  | ||||||
|             NativeCipher cipher = new NativeCipher(); |             NativeCipher cipher = new NativeCipher(); | ||||||
|             System.out.println( "Testing native cipher..." ); |             System.out.println( "Testing native cipher..." ); | ||||||
| @@ -48,7 +48,7 @@ public class NativeCipherTest | |||||||
|         if ( NativeCode.isSupported() ) |         if ( NativeCode.isSupported() ) | ||||||
|         { |         { | ||||||
|             boolean loaded = factory.load(); |             boolean loaded = factory.load(); | ||||||
|             Assert.assertTrue( "Native cipher failed to load!", loaded ); |             assertTrue( loaded, "Native cipher failed to load!" ); | ||||||
|  |  | ||||||
|             NativeCipher cipher = new NativeCipher(); |             NativeCipher cipher = new NativeCipher(); | ||||||
|  |  | ||||||
| @@ -98,7 +98,7 @@ public class NativeCipherTest | |||||||
|         // Encrypt |         // Encrypt | ||||||
|         cipher.init( true, secret ); |         cipher.init( true, secret ); | ||||||
|         cipher.cipher( nativePlain, out ); |         cipher.cipher( nativePlain, out ); | ||||||
|         Assert.assertEquals( nativeCiphered, out ); |         assertEquals( nativeCiphered, out ); | ||||||
|  |  | ||||||
|         out.clear(); |         out.clear(); | ||||||
|  |  | ||||||
| @@ -106,7 +106,7 @@ public class NativeCipherTest | |||||||
|         cipher.init( false, secret ); |         cipher.init( false, secret ); | ||||||
|         cipher.cipher( nativeCiphered, out ); |         cipher.cipher( nativeCiphered, out ); | ||||||
|         nativePlain.resetReaderIndex(); |         nativePlain.resetReaderIndex(); | ||||||
|         Assert.assertEquals( nativePlain, out ); |         assertEquals( nativePlain, out ); | ||||||
|  |  | ||||||
|         System.out.println( "This cipher works correctly!" ); |         System.out.println( "This cipher works correctly!" ); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| package net.md_5.bungee; | package net.md_5.bungee; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import io.netty.buffer.ByteBuf; | import io.netty.buffer.ByteBuf; | ||||||
| import io.netty.buffer.Unpooled; | import io.netty.buffer.Unpooled; | ||||||
| import java.util.Arrays; | import java.util.Arrays; | ||||||
| @@ -9,8 +10,7 @@ import net.md_5.bungee.jni.NativeCode; | |||||||
| import net.md_5.bungee.jni.zlib.BungeeZlib; | import net.md_5.bungee.jni.zlib.BungeeZlib; | ||||||
| import net.md_5.bungee.jni.zlib.JavaZlib; | import net.md_5.bungee.jni.zlib.JavaZlib; | ||||||
| import net.md_5.bungee.jni.zlib.NativeZlib; | import net.md_5.bungee.jni.zlib.NativeZlib; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.api.Test; | ||||||
| import org.junit.Test; |  | ||||||
|  |  | ||||||
| public class NativeZlibTest | public class NativeZlibTest | ||||||
| { | { | ||||||
| @@ -22,7 +22,7 @@ public class NativeZlibTest | |||||||
|     { |     { | ||||||
|         if ( NativeCode.isSupported() ) |         if ( NativeCode.isSupported() ) | ||||||
|         { |         { | ||||||
|             Assert.assertTrue( "Native code failed to load!", factory.load() ); |             assertTrue( factory.load(), "Native code failed to load!" ); | ||||||
|             test( factory.newInstance() ); |             test( factory.newInstance() ); | ||||||
|         } |         } | ||||||
|         test( new JavaZlib() ); |         test( new JavaZlib() ); | ||||||
| @@ -64,6 +64,6 @@ public class NativeZlibTest | |||||||
|         long elapsed = System.currentTimeMillis() - start; |         long elapsed = System.currentTimeMillis() - start; | ||||||
|         System.out.println( "Took: " + elapsed + "ms" ); |         System.out.println( "Took: " + elapsed + "ms" ); | ||||||
|  |  | ||||||
|         Assert.assertTrue( "Results do not match", Arrays.equals( dataBuf, check ) ); |         assertTrue( Arrays.equals( dataBuf, check ), "Results do not match" ); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								pom.xml
									
									
									
									
									
								
							| @@ -90,9 +90,9 @@ | |||||||
|     </dependencyManagement> |     </dependencyManagement> | ||||||
|     <dependencies> |     <dependencies> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>junit</groupId> |             <groupId>org.junit.jupiter</groupId> | ||||||
|             <artifactId>junit</artifactId> |             <artifactId>junit-jupiter</artifactId> | ||||||
|             <version>4.13.2</version> |             <version>5.10.0</version> | ||||||
|             <scope>test</scope> |             <scope>test</scope> | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
|   | |||||||
| @@ -15,6 +15,7 @@ public class MinecraftEncoder extends MessageToByteEncoder<DefinedPacket> | |||||||
|     @Setter |     @Setter | ||||||
|     private Protocol protocol; |     private Protocol protocol; | ||||||
|     private boolean server; |     private boolean server; | ||||||
|  |     @Getter | ||||||
|     @Setter |     @Setter | ||||||
|     private int protocolVersion; |     private int protocolVersion; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -658,8 +658,8 @@ public enum Protocol | |||||||
|     /*========================================================================*/ |     /*========================================================================*/ | ||||||
|     public static final int MAX_PACKET_ID = 0xFF; |     public static final int MAX_PACKET_ID = 0xFF; | ||||||
|     /*========================================================================*/ |     /*========================================================================*/ | ||||||
|     final DirectionData TO_SERVER = new DirectionData( this, ProtocolConstants.Direction.TO_SERVER ); |     public final DirectionData TO_SERVER = new DirectionData( this, ProtocolConstants.Direction.TO_SERVER ); | ||||||
|     final DirectionData TO_CLIENT = new DirectionData( this, ProtocolConstants.Direction.TO_CLIENT ); |     public final DirectionData TO_CLIENT = new DirectionData( this, ProtocolConstants.Direction.TO_CLIENT ); | ||||||
|  |  | ||||||
|     public static void main(String[] args) |     public static void main(String[] args) | ||||||
|     { |     { | ||||||
| @@ -719,7 +719,7 @@ public enum Protocol | |||||||
|         return new ProtocolMapping( protocol, id ); |         return new ProtocolMapping( protocol, id ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     static final class DirectionData |     public static final class DirectionData | ||||||
|     { |     { | ||||||
|  |  | ||||||
|         private final TIntObjectMap<ProtocolData> protocols = new TIntObjectHashMap<>(); |         private final TIntObjectMap<ProtocolData> protocols = new TIntObjectHashMap<>(); | ||||||
| @@ -802,6 +802,17 @@ public enum Protocol | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         public boolean hasPacket(Class<? extends DefinedPacket> packet, int version) | ||||||
|  |         { | ||||||
|  |             ProtocolData protocolData = getProtocolData( version ); | ||||||
|  |             if ( protocolData == null ) | ||||||
|  |             { | ||||||
|  |                 throw new BadPacketException( "Unsupported protocol version" ); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             return protocolData.packetMap.containsKey( packet ); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         final int getId(Class<? extends DefinedPacket> packet, int version) |         final int getId(Class<? extends DefinedPacket> packet, int version) | ||||||
|         { |         { | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| package net.md_5.bungee.protocol.packet; | package net.md_5.bungee.protocol.packet; | ||||||
|  |  | ||||||
| import org.junit.Assert; | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import org.junit.Test; | import org.junit.jupiter.api.Test; | ||||||
|  |  | ||||||
| public class PluginMessageTest | public class PluginMessageTest | ||||||
| { | { | ||||||
| @@ -9,9 +9,9 @@ public class PluginMessageTest | |||||||
|     @Test |     @Test | ||||||
|     public void testModerniseChannel() |     public void testModerniseChannel() | ||||||
|     { |     { | ||||||
|         Assert.assertEquals( "bungeecord:main", PluginMessage.MODERNISE.apply( "BungeeCord" ) ); |         assertEquals( "bungeecord:main", PluginMessage.MODERNISE.apply( "BungeeCord" ) ); | ||||||
|         Assert.assertEquals( "BungeeCord", PluginMessage.MODERNISE.apply( "bungeecord:main" ) ); |         assertEquals( "BungeeCord", PluginMessage.MODERNISE.apply( "bungeecord:main" ) ); | ||||||
|         Assert.assertEquals( "legacy:foo", PluginMessage.MODERNISE.apply( "FoO" ) ); |         assertEquals( "legacy:foo", PluginMessage.MODERNISE.apply( "FoO" ) ); | ||||||
|         Assert.assertEquals( "foo:bar", PluginMessage.MODERNISE.apply( "foo:bar" ) ); |         assertEquals( "foo:bar", PluginMessage.MODERNISE.apply( "foo:bar" ) ); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ import java.net.InetSocketAddress; | |||||||
| import java.net.SocketAddress; | import java.net.SocketAddress; | ||||||
| import java.util.ArrayDeque; | import java.util.ArrayDeque; | ||||||
| import java.util.Queue; | import java.util.Queue; | ||||||
|  | import java.util.concurrent.ConcurrentLinkedQueue; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.Getter; | import lombok.Getter; | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
| @@ -13,6 +14,7 @@ import net.md_5.bungee.api.chat.BaseComponent; | |||||||
| import net.md_5.bungee.api.connection.Server; | import net.md_5.bungee.api.connection.Server; | ||||||
| import net.md_5.bungee.netty.ChannelWrapper; | import net.md_5.bungee.netty.ChannelWrapper; | ||||||
| import net.md_5.bungee.protocol.DefinedPacket; | import net.md_5.bungee.protocol.DefinedPacket; | ||||||
|  | import net.md_5.bungee.protocol.Protocol; | ||||||
| import net.md_5.bungee.protocol.packet.PluginMessage; | import net.md_5.bungee.protocol.packet.PluginMessage; | ||||||
|  |  | ||||||
| @RequiredArgsConstructor | @RequiredArgsConstructor | ||||||
| @@ -30,6 +32,7 @@ public class ServerConnection implements Server | |||||||
|     private final boolean forgeServer = false; |     private final boolean forgeServer = false; | ||||||
|     @Getter |     @Getter | ||||||
|     private final Queue<KeepAliveData> keepAlives = new ArrayDeque<>(); |     private final Queue<KeepAliveData> keepAlives = new ArrayDeque<>(); | ||||||
|  |     private final Queue<DefinedPacket> packetQueue = new ConcurrentLinkedQueue<>(); | ||||||
|  |  | ||||||
|     private final Unsafe unsafe = new Unsafe() |     private final Unsafe unsafe = new Unsafe() | ||||||
|     { |     { | ||||||
| @@ -40,10 +43,31 @@ public class ServerConnection implements Server | |||||||
|         } |         } | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|  |     public void sendPacketQueued(DefinedPacket packet) | ||||||
|  |     { | ||||||
|  |         Protocol encodeProtocol = ch.getEncodeProtocol(); | ||||||
|  |         if ( !encodeProtocol.TO_SERVER.hasPacket( packet.getClass(), ch.getEncodeVersion() ) ) | ||||||
|  |         { | ||||||
|  |             packetQueue.add( packet ); | ||||||
|  |         } else | ||||||
|  |         { | ||||||
|  |             unsafe().sendPacket( packet ); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void sendQueuedPackets() | ||||||
|  |     { | ||||||
|  |         DefinedPacket packet; | ||||||
|  |         while ( ( packet = packetQueue.poll() ) != null ) | ||||||
|  |         { | ||||||
|  |             unsafe().sendPacket( packet ); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void sendData(String channel, byte[] data) |     public void sendData(String channel, byte[] data) | ||||||
|     { |     { | ||||||
|         unsafe().sendPacket( new PluginMessage( channel, data, forgeServer ) ); |         sendPacketQueued( new PluginMessage( channel, data, forgeServer ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|   | |||||||
| @@ -20,6 +20,7 @@ import java.util.Map; | |||||||
| import java.util.Objects; | import java.util.Objects; | ||||||
| import java.util.Queue; | import java.util.Queue; | ||||||
| import java.util.UUID; | import java.util.UUID; | ||||||
|  | import java.util.concurrent.ConcurrentLinkedQueue; | ||||||
| import java.util.logging.Level; | import java.util.logging.Level; | ||||||
| import lombok.Getter; | import lombok.Getter; | ||||||
| import lombok.NonNull; | import lombok.NonNull; | ||||||
| @@ -142,6 +143,7 @@ public final class UserConnection implements ProxiedPlayer | |||||||
|     @Setter |     @Setter | ||||||
|     private ForgeServerHandler forgeServerHandler; |     private ForgeServerHandler forgeServerHandler; | ||||||
|     /*========================================================================*/ |     /*========================================================================*/ | ||||||
|  |     private final Queue<DefinedPacket> packetQueue = new ConcurrentLinkedQueue<>(); | ||||||
|     private final Unsafe unsafe = new Unsafe() |     private final Unsafe unsafe = new Unsafe() | ||||||
|     { |     { | ||||||
|         @Override |         @Override | ||||||
| @@ -177,6 +179,27 @@ public final class UserConnection implements ProxiedPlayer | |||||||
|         ch.write( packet ); |         ch.write( packet ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void sendPacketQueued(DefinedPacket packet) | ||||||
|  |     { | ||||||
|  |         Protocol encodeProtocol = ch.getEncodeProtocol(); | ||||||
|  |         if ( !encodeProtocol.TO_CLIENT.hasPacket( packet.getClass(), getPendingConnection().getVersion() ) ) | ||||||
|  |         { | ||||||
|  |             packetQueue.add( packet ); | ||||||
|  |         } else | ||||||
|  |         { | ||||||
|  |             unsafe().sendPacket( packet ); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void sendQueuedPackets() | ||||||
|  |     { | ||||||
|  |         DefinedPacket packet; | ||||||
|  |         while ( ( packet = packetQueue.poll() ) != null ) | ||||||
|  |         { | ||||||
|  |             unsafe().sendPacket( packet ); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Deprecated |     @Deprecated | ||||||
|     public boolean isActive() |     public boolean isActive() | ||||||
|     { |     { | ||||||
| @@ -489,10 +512,10 @@ public final class UserConnection implements ProxiedPlayer | |||||||
|                 position = ChatMessageType.SYSTEM; |                 position = ChatMessageType.SYSTEM; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             unsafe().sendPacket( new SystemChat( message, position.ordinal() ) ); |             sendPacketQueued( new SystemChat( message, position.ordinal() ) ); | ||||||
|         } else |         } else | ||||||
|         { |         { | ||||||
|             unsafe().sendPacket( new Chat( message, (byte) position.ordinal(), sender ) ); |             sendPacketQueued( new Chat( message, (byte) position.ordinal(), sender ) ); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -513,7 +536,7 @@ public final class UserConnection implements ProxiedPlayer | |||||||
|                 net.md_5.bungee.protocol.packet.Title title = new net.md_5.bungee.protocol.packet.Title(); |                 net.md_5.bungee.protocol.packet.Title title = new net.md_5.bungee.protocol.packet.Title(); | ||||||
|                 title.setAction( net.md_5.bungee.protocol.packet.Title.Action.ACTIONBAR ); |                 title.setAction( net.md_5.bungee.protocol.packet.Title.Action.ACTIONBAR ); | ||||||
|                 title.setText( ComponentSerializer.toString( message ) ); |                 title.setText( ComponentSerializer.toString( message ) ); | ||||||
|                 unsafe.sendPacket( title ); |                 sendPacketQueued( title ); | ||||||
|             } |             } | ||||||
|         } else |         } else | ||||||
|         { |         { | ||||||
| @@ -524,7 +547,7 @@ public final class UserConnection implements ProxiedPlayer | |||||||
|     @Override |     @Override | ||||||
|     public void sendData(String channel, byte[] data) |     public void sendData(String channel, byte[] data) | ||||||
|     { |     { | ||||||
|         unsafe().sendPacket( new PluginMessage( channel, data, forgeClientHandler.isForgeUser() ) ); |         sendPacketQueued( new PluginMessage( channel, data, forgeClientHandler.isForgeUser() ) ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| @@ -700,7 +723,7 @@ public final class UserConnection implements ProxiedPlayer | |||||||
|         header = ChatComponentTransformer.getInstance().transform( this, true, header )[0]; |         header = ChatComponentTransformer.getInstance().transform( this, true, header )[0]; | ||||||
|         footer = ChatComponentTransformer.getInstance().transform( this, true, footer )[0]; |         footer = ChatComponentTransformer.getInstance().transform( this, true, footer )[0]; | ||||||
|  |  | ||||||
|         unsafe().sendPacket( new PlayerListHeaderFooter( |         sendPacketQueued( new PlayerListHeaderFooter( | ||||||
|                 ComponentSerializer.toString( header ), |                 ComponentSerializer.toString( header ), | ||||||
|                 ComponentSerializer.toString( footer ) |                 ComponentSerializer.toString( footer ) | ||||||
|         ) ); |         ) ); | ||||||
| @@ -712,7 +735,7 @@ public final class UserConnection implements ProxiedPlayer | |||||||
|         header = ChatComponentTransformer.getInstance().transform( this, true, header ); |         header = ChatComponentTransformer.getInstance().transform( this, true, header ); | ||||||
|         footer = ChatComponentTransformer.getInstance().transform( this, true, footer ); |         footer = ChatComponentTransformer.getInstance().transform( this, true, footer ); | ||||||
|  |  | ||||||
|         unsafe().sendPacket( new PlayerListHeaderFooter( |         sendPacketQueued( new PlayerListHeaderFooter( | ||||||
|                 ComponentSerializer.toString( header ), |                 ComponentSerializer.toString( header ), | ||||||
|                 ComponentSerializer.toString( footer ) |                 ComponentSerializer.toString( footer ) | ||||||
|         ) ); |         ) ); | ||||||
|   | |||||||
| @@ -31,6 +31,7 @@ import net.md_5.bungee.protocol.packet.Chat; | |||||||
| import net.md_5.bungee.protocol.packet.ClientChat; | import net.md_5.bungee.protocol.packet.ClientChat; | ||||||
| import net.md_5.bungee.protocol.packet.ClientCommand; | import net.md_5.bungee.protocol.packet.ClientCommand; | ||||||
| import net.md_5.bungee.protocol.packet.ClientSettings; | import net.md_5.bungee.protocol.packet.ClientSettings; | ||||||
|  | import net.md_5.bungee.protocol.packet.FinishConfiguration; | ||||||
| import net.md_5.bungee.protocol.packet.KeepAlive; | import net.md_5.bungee.protocol.packet.KeepAlive; | ||||||
| import net.md_5.bungee.protocol.packet.LoginAcknowledged; | import net.md_5.bungee.protocol.packet.LoginAcknowledged; | ||||||
| import net.md_5.bungee.protocol.packet.PlayerListItem; | import net.md_5.bungee.protocol.packet.PlayerListItem; | ||||||
| @@ -340,10 +341,21 @@ public class UpstreamBridge extends PacketHandler | |||||||
|             ch.setDecodeProtocol( Protocol.CONFIGURATION ); |             ch.setDecodeProtocol( Protocol.CONFIGURATION ); | ||||||
|             ch.write( new LoginAcknowledged() ); |             ch.write( new LoginAcknowledged() ); | ||||||
|             ch.setEncodeProtocol( Protocol.CONFIGURATION ); |             ch.setEncodeProtocol( Protocol.CONFIGURATION ); | ||||||
|  |  | ||||||
|  |             con.getServer().sendQueuedPackets(); | ||||||
|  |  | ||||||
|             throw CancelSendSignal.INSTANCE; |             throw CancelSendSignal.INSTANCE; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void handle(FinishConfiguration finishConfiguration) throws Exception | ||||||
|  |     { | ||||||
|  |         con.sendQueuedPackets(); | ||||||
|  |  | ||||||
|  |         super.handle( finishConfiguration ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public String toString() |     public String toString() | ||||||
|     { |     { | ||||||
|   | |||||||
| @@ -69,6 +69,11 @@ public class ChannelWrapper | |||||||
|         ch.pipeline().get( MinecraftEncoder.class ).setProtocolVersion( protocol ); |         ch.pipeline().get( MinecraftEncoder.class ).setProtocolVersion( protocol ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public int getEncodeVersion() | ||||||
|  |     { | ||||||
|  |         return ch.pipeline().get( MinecraftEncoder.class ).getProtocolVersion(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public void write(Object packet) |     public void write(Object packet) | ||||||
|     { |     { | ||||||
|         if ( !closed ) |         if ( !closed ) | ||||||
|   | |||||||
| @@ -1,12 +1,12 @@ | |||||||
| package net.md_5.bungee; | package net.md_5.bungee; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import com.google.common.base.Ticker; | import com.google.common.base.Ticker; | ||||||
| import java.net.InetAddress; | import java.net.InetAddress; | ||||||
| import java.net.InetSocketAddress; | import java.net.InetSocketAddress; | ||||||
| import java.net.UnknownHostException; | import java.net.UnknownHostException; | ||||||
| import java.util.concurrent.TimeUnit; | import java.util.concurrent.TimeUnit; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.api.Test; | ||||||
| import org.junit.Test; |  | ||||||
|  |  | ||||||
| public class ThrottleTest | public class ThrottleTest | ||||||
| { | { | ||||||
| @@ -38,18 +38,18 @@ public class ThrottleTest | |||||||
|             address = new InetSocketAddress( InetAddress.getByName( null ), 0 ); |             address = new InetSocketAddress( InetAddress.getByName( null ), 0 ); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         Assert.assertFalse( "Address should not be throttled", throttle.throttle( address ) ); // 1 |         assertFalse( throttle.throttle( address ), "Address should not be throttled" ); // 1 | ||||||
|         Assert.assertFalse( "Address should not be throttled", throttle.throttle( address ) ); // 2 |         assertFalse( throttle.throttle( address ), "Address should not be throttled" ); // 2 | ||||||
|         Assert.assertFalse( "Address should not be throttled", throttle.throttle( address ) ); // 3 |         assertFalse( throttle.throttle( address ), "Address should not be throttled" ); // 3 | ||||||
|         Assert.assertTrue( "Address should be throttled", throttle.throttle( address ) ); // The 3rd one must be throttled, but also increased the count to 4 |         assertTrue( throttle.throttle( address ), "Address should be throttled" ); // The 3rd one must be throttled, but also increased the count to 4 | ||||||
|  |  | ||||||
|         throttle.unthrottle( address ); // We are back at 3, next attempt will make it 4 and throttle |         throttle.unthrottle( address ); // We are back at 3, next attempt will make it 4 and throttle | ||||||
|         throttle.unthrottle( address ); // Now we are at 2, will not be throttled |         throttle.unthrottle( address ); // Now we are at 2, will not be throttled | ||||||
|         Assert.assertFalse( "Address should not be throttled", throttle.throttle( address ) ); // 3 |         assertFalse( throttle.throttle( address ), "Address should not be throttled" ); // 3 | ||||||
|         Assert.assertTrue( "Address should be throttled", throttle.throttle( address ) ); // 4 |         assertTrue( throttle.throttle( address ), "Address should be throttled" ); // 4 | ||||||
|  |  | ||||||
|         // Now test expiration |         // Now test expiration | ||||||
|         ticker.value += TimeUnit.MILLISECONDS.toNanos( 50 ); |         ticker.value += TimeUnit.MILLISECONDS.toNanos( 50 ); | ||||||
|         Assert.assertFalse( "Address should not be throttled", throttle.throttle( address ) ); |         assertFalse( throttle.throttle( address ), "Address should not be throttled" ); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,13 +1,13 @@ | |||||||
| package net.md_5.bungee.scheduler; | package net.md_5.bungee.scheduler; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import java.util.concurrent.CountDownLatch; | import java.util.concurrent.CountDownLatch; | ||||||
| import java.util.concurrent.TimeUnit; | import java.util.concurrent.TimeUnit; | ||||||
| import java.util.concurrent.atomic.AtomicBoolean; | import java.util.concurrent.atomic.AtomicBoolean; | ||||||
| import net.md_5.bungee.api.plugin.DummyPlugin; | import net.md_5.bungee.api.plugin.DummyPlugin; | ||||||
| import net.md_5.bungee.api.scheduler.ScheduledTask; | import net.md_5.bungee.api.scheduler.ScheduledTask; | ||||||
| import net.md_5.bungee.api.scheduler.TaskScheduler; | import net.md_5.bungee.api.scheduler.TaskScheduler; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.api.Test; | ||||||
| import org.junit.Test; |  | ||||||
|  |  | ||||||
| public class SchedulerTest | public class SchedulerTest | ||||||
| { | { | ||||||
| @@ -31,7 +31,7 @@ public class SchedulerTest | |||||||
|  |  | ||||||
|         latch.await( 5, TimeUnit.SECONDS ); |         latch.await( 5, TimeUnit.SECONDS ); | ||||||
|  |  | ||||||
|         Assert.assertEquals( 0, latch.getCount() ); |         assertEquals( 0, latch.getCount() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -43,17 +43,17 @@ public class SchedulerTest | |||||||
|         ScheduledTask task = setup( scheduler, b ); |         ScheduledTask task = setup( scheduler, b ); | ||||||
|         scheduler.cancel( task.getId() ); |         scheduler.cancel( task.getId() ); | ||||||
|         Thread.sleep( 250 ); |         Thread.sleep( 250 ); | ||||||
|         Assert.assertFalse( b.get() ); |         assertFalse( b.get() ); | ||||||
|  |  | ||||||
|         task = setup( scheduler, b ); |         task = setup( scheduler, b ); | ||||||
|         scheduler.cancel( task ); |         scheduler.cancel( task ); | ||||||
|         Thread.sleep( 250 ); |         Thread.sleep( 250 ); | ||||||
|         Assert.assertFalse( b.get() ); |         assertFalse( b.get() ); | ||||||
|  |  | ||||||
|         task = setup( scheduler, b ); |         task = setup( scheduler, b ); | ||||||
|         scheduler.cancel( task.getOwner() ); |         scheduler.cancel( task.getOwner() ); | ||||||
|         Thread.sleep( 250 ); |         Thread.sleep( 250 ); | ||||||
|         Assert.assertFalse( b.get() ); |         assertFalse( b.get() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
| @@ -64,11 +64,11 @@ public class SchedulerTest | |||||||
|  |  | ||||||
|         setup( scheduler, b ); |         setup( scheduler, b ); | ||||||
|         Thread.sleep( 250 ); |         Thread.sleep( 250 ); | ||||||
|         Assert.assertTrue( b.get() ); |         assertTrue( b.get() ); | ||||||
|  |  | ||||||
|         b.set( false ); |         b.set( false ); | ||||||
|         Thread.sleep( 250 ); |         Thread.sleep( 250 ); | ||||||
|         Assert.assertTrue( b.get() ); |         assertTrue( b.get() ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private ScheduledTask setup(TaskScheduler scheduler, final AtomicBoolean hasRun) |     private ScheduledTask setup(TaskScheduler scheduler, final AtomicBoolean hasRun) | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| package net.md_5.bungee.util; | package net.md_5.bungee.util; | ||||||
|  |  | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import java.net.InetSocketAddress; | import java.net.InetSocketAddress; | ||||||
| import org.junit.Assert; | import org.junit.jupiter.api.Test; | ||||||
| import org.junit.Test; |  | ||||||
|  |  | ||||||
| public class AddressUtilTest | public class AddressUtilTest | ||||||
| { | { | ||||||
| @@ -11,9 +11,9 @@ public class AddressUtilTest | |||||||
|     public void testScope() |     public void testScope() | ||||||
|     { |     { | ||||||
|         InetSocketAddress addr = new InetSocketAddress( "0:0:0:0:0:0:0:1%0", 25577 ); |         InetSocketAddress addr = new InetSocketAddress( "0:0:0:0:0:0:0:1%0", 25577 ); | ||||||
|         Assert.assertEquals( "0:0:0:0:0:0:0:1", AddressUtil.sanitizeAddress( addr ) ); |         assertEquals( "0:0:0:0:0:0:0:1", AddressUtil.sanitizeAddress( addr ) ); | ||||||
|  |  | ||||||
|         InetSocketAddress addr2 = new InetSocketAddress( "0:0:0:0:0:0:0:1", 25577 ); |         InetSocketAddress addr2 = new InetSocketAddress( "0:0:0:0:0:0:0:1", 25577 ); | ||||||
|         Assert.assertEquals( "0:0:0:0:0:0:0:1", AddressUtil.sanitizeAddress( addr2 ) ); |         assertEquals( "0:0:0:0:0:0:0:1", AddressUtil.sanitizeAddress( addr2 ) ); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user