/*
 * Copyright (C) 2009-2017 the original author(s).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.fusesource.jansi;

import org.fusesource.jansi.Ansi.Color;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

/**
 * Tests for the {@link Ansi} class.
 *
 * @author <a href="mailto:jason@planet57.com">Jason Dillon</a>
 */
public class AnsiTest {
    @Test
    public void testSetEnabled() throws Exception {
        Ansi.setEnabled(false);
        new Thread() {
            @Override
            public void run() {
                assertEquals(false, Ansi.isEnabled());
            }
        }.run();

        Ansi.setEnabled(true);
        new Thread() {
            @Override
            public void run() {
                assertEquals(true, Ansi.isEnabled());
            }
        }.run();
    }

    @Test
    public void testClone() throws CloneNotSupportedException {
        Ansi ansi = Ansi.ansi().a("Some text").bg(Color.BLACK).fg(Color.WHITE);
        Ansi clone = new Ansi(ansi);

        assertEquals(ansi.a("test").reset().toString(), clone.a("test").reset().toString());
    }
}
@@ -21,17 +21,17 @@
 2009-201
-7
+8
  the ori
@@ -731,28 +731,17 @@
 .Assert.
-assertEquals
+*
 ;%0A%0A/**%0A 
@@ -921,16 +921,27 @@
  throws 
+Interrupted
 Exceptio
@@ -936,32 +936,33 @@
 ptedException %7B%0A
+%0A
         Ansi.set
@@ -976,32 +976,56 @@
 (false);%0A       
+ Thread threadDisabled =
  new Thread() %7B%0A
@@ -1098,27 +1098,104 @@
     
-assertEquals(false,
+System.out.println(Ansi.ansi().fgRed().a(%22ANSI disabled%22).reset());%0A                assertFalse(
  Ans
@@ -1199,32 +1199,33 @@
 Ansi.isEnabled()
+ 
 );%0A            %7D
@@ -1234,22 +1234,16 @@
        %7D
-.run()
 ;%0A%0A     
@@ -1276,16 +1276,38 @@
         
+Thread threadEnabled =
 new Thre
@@ -1387,26 +1387,103 @@
     
-assertEquals(true,
+System.out.println(Ansi.ansi().fgBlue().a(%22ANSI enabled%22).reset());%0A                assertTrue(
  Ans
@@ -1495,16 +1495,17 @@
 nabled()
+ 
 );%0A     
@@ -1526,94 +1526,299 @@
    %7D
-.run(
+;%0A%0A        Ansi.setEnabled(false
 );%0A    
-%7D%0A%0A
     
-@Test%0A    public void testClone() throws CloneNotSupportedException
+System.out.println(Ansi.ansi().fgBlue().a(%22Ansi test thread start%22).reset());%0A%0A        threadDisabled.start();%0A        threadEnabled.start();%0A%0A        threadEnabled.join();%0A        threadDisabled.join();%0A    %7D%0A%0A    @Test%0A    public void testClone()
  %7B%0A 

Fix Thread test to run test in additional threads