// Path: src/test/java/com/gikk/twirk/TestConsumer.java
// public class TestConsumer<T> {
//     private Function<T, Boolean> test;
//     private TestResult res;
// 
//     public TestResult assign(Function<T, Boolean> test){
//         this.test = test;
//         return res = new TestResult();
//     }
// 
//     public void consume(T input){
//         if(test != null) {
//             res.complete(test.apply(input));
//         }
//     }
// }
// 
// Path: src/test/java/com/gikk/twirk/TestResult.java
// public class TestResult {
//     CompletableFuture<Boolean> res = new CompletableFuture<>();
// 
//     TestResult(){ }
// 
//     void complete(boolean result){
//         res.complete(result);
//     }
// 
//     public boolean await() throws Exception {
//         return res.get(TestSuit.WAIT_TIME, TestSuit.UNIT);
//     }
// }


import com.gikk.twirk.TestConsumer;
import com.gikk.twirk.TestResult;
import java.util.function.Consumer;
import static org.junit.Assert.*;
package com.gikk.twirk.types.roomstate;



public class TestRoomstate {

  private final static String JOIN = "@broadcaster-lang=;emote-only=0;r9k=0;slow=0;subs-only=0;followers-only=-1 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String SUB_MODE_ON_MESSAGE = "@subs-only=1 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String SUB_MODE_OFF_MESSAGE = "@subs-only=0 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String R9K_MODE_ON_MESSAGE = "@r9k=1 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String R9K_MODE_OFF_MESSAGE = "@r9k=0 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String SLOW_MODE_120_MESSAGE = "@slow=120 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String SLOW_MODE_OFF_MESSAGE = "@slow=0 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String FOLLOWERS_MODE_ON_MESSAGE = "@followers-only=0 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String FOLLOWERS_MODE_OFF_MESSAGE = "@followers-only=-1 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String EMOTE_ONLY_MODE_ON_MESSAGE = "@emote-only=1 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String EMOTE_ONLY_MODE_OFF_MESSAGE = "@emote-only=0 :tmi.twitch.tv ROOMSTATE #gikkman";

  public static void test(Consumer<String> twirkIn, TestConsumer<Roomstate> roomstateTest) throws Exception {
// Path: src/test/java/com/gikk/twirk/TestConsumer.java
// public class TestConsumer<T> {
//     private Function<T, Boolean> test;
//     private TestResult res;
// 
//     public TestResult assign(Function<T, Boolean> test){
//         this.test = test;
//         return res = new TestResult();
//     }
// 
//     public void consume(T input){
//         if(test != null) {
//             res.complete(test.apply(input));
//         }
//     }
// }
// 
// Path: src/test/java/com/gikk/twirk/TestResult.java
// public class TestResult {
//     CompletableFuture<Boolean> res = new CompletableFuture<>();
// 
//     TestResult(){ }
// 
//     void complete(boolean result){
//         res.complete(result);
//     }
// 
//     public boolean await() throws Exception {
//         return res.get(TestSuit.WAIT_TIME, TestSuit.UNIT);
//     }
// }


// Path: src/test/java/com/gikk/twirk/types/roomstate/TestRoomstate.java
import com.gikk.twirk.TestConsumer;
import com.gikk.twirk.TestResult;
import java.util.function.Consumer;
import static org.junit.Assert.*;

package com.gikk.twirk.types.roomstate;



public class TestRoomstate {

  private final static String JOIN = "@broadcaster-lang=;emote-only=0;r9k=0;slow=0;subs-only=0;followers-only=-1 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String SUB_MODE_ON_MESSAGE = "@subs-only=1 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String SUB_MODE_OFF_MESSAGE = "@subs-only=0 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String R9K_MODE_ON_MESSAGE = "@r9k=1 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String R9K_MODE_OFF_MESSAGE = "@r9k=0 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String SLOW_MODE_120_MESSAGE = "@slow=120 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String SLOW_MODE_OFF_MESSAGE = "@slow=0 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String FOLLOWERS_MODE_ON_MESSAGE = "@followers-only=0 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String FOLLOWERS_MODE_OFF_MESSAGE = "@followers-only=-1 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String EMOTE_ONLY_MODE_ON_MESSAGE = "@emote-only=1 :tmi.twitch.tv ROOMSTATE #gikkman";
  private final static String EMOTE_ONLY_MODE_OFF_MESSAGE = "@emote-only=0 :tmi.twitch.tv ROOMSTATE #gikkman";

  public static void test(Consumer<String> twirkIn, TestConsumer<Roomstate> roomstateTest) throws Exception {
    TestResult t1 = roomstateTest.assign(TestRoomstate::testJoin);