/*
 * Copyright (C) 2009-2018 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.*;

/**
 * Tests for the {@link Ansi} class.
 *
 * @author <a href="mailto:jason@planet57.com">Jason Dillon</a>
 */
public class AnsiTest {
    @Test
    public void testSetEnabled() throws InterruptedException {

        Ansi.setEnabled(false);
        Thread threadDisabled = new Thread() {
            @Override
            public void run() {
                System.out.println(Ansi.ansi().fgRed().a("ANSI disabled").reset());
                assertFalse( Ansi.isEnabled() );
            }
        };

        Ansi.setEnabled(true);
        Thread threadEnabled =new Thread() {
            @Override
            public void run() {
                System.out.println(Ansi.ansi().fgBlue().a("ANSI enabled").reset());
                assertTrue( Ansi.isEnabled() );
            }
        };

        Ansi.setEnabled(false);
        System.out.println(Ansi.ansi().fgBlue().a("Ansi test thread start").reset());

        threadDisabled.start();
        threadEnabled.start();

        threadEnabled.join();
        threadDisabled.join();
    }

    @Test
    public void testClone() {
        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());
    }
}
@@ -25,9 +25,9 @@
 -201
-8
+7
  the
@@ -731,17 +731,28 @@
 .Assert.
-*
+assertEquals
 ;%0A%0A/**%0A 
@@ -936,19 +936,8 @@
 ows 
-Interrupted
 Exce
@@ -944,17 +944,16 @@
 ption %7B%0A
-%0A
         
@@ -987,32 +987,8 @@
     
- Thread threadDisabled =
  new
@@ -1073,104 +1073,27 @@
     
-System.out.println(Ansi.ansi().fgRed().a(%22ANSI disabled%22).reset());%0A                assertF
+assertEquals(f
 alse
-(
+,
  Ans
@@ -1097,33 +1097,32 @@
 Ansi.isEnabled()
- 
 );%0A            %7D
@@ -1123,32 +1123,38 @@
      %7D%0A        %7D
+.run()
 ;%0A%0A        Ansi.
@@ -1183,30 +1183,8 @@
     
-Thread threadEnabled =
 new 
@@ -1268,103 +1268,26 @@
     
-System.out.println(Ansi.ansi().fgBlue().a(%22ANSI enabled%22).reset());%0A                assertTrue(
+assertEquals(true,
  Ans
@@ -1299,17 +1299,16 @@
 nabled()
- 
 );%0A     
@@ -1329,250 +1329,11 @@
    %7D
-;%0A%0A        Ansi.setEnabled(false);%0A        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.joi
+.ru
 n();
@@ -1377,16 +1377,50 @@
 tClone()
+ throws CloneNotSupportedException
  %7B%0A     

Revert "Fix Thread test to run test in additional threads"