track these i guess
- SHA
5dda99d364a25bdec8291feeac8ff47f9534543f- Parents
-
e13b7ce - Tree
d2aed2b
5dda99d
5dda99d364a25bdec8291feeac8ff47f9534543fe13b7ce
d2aed2b| Status | File | + | - |
|---|---|---|---|
| A |
test/test_ansi.sh
|
28 | 0 |
| A |
test/test_display_sim
|
bin | |
| A |
test/test_display_sim.f90
|
42 | 0 |
| A |
test/test_fortran_ansi
|
bin | |
| A |
test/test_fortran_ansi.f90
|
25 | 0 |
| A |
test/test_interactive.sh
|
36 | 0 |
| A |
test/test_reverse.sh
|
16 | 0 |
test/test_ansi.shadded@@ -0,0 +1,28 @@ | ||
| 1 | +#!/bin/bash | |
| 2 | +# Test ANSI color rendering similar to fortress | |
| 3 | + | |
| 4 | +echo "Testing ANSI codes as fortress uses them:" | |
| 5 | +echo "" | |
| 6 | + | |
| 7 | +# Test 1: Normal color + filename | |
| 8 | +printf '\033[34m\033[1mDirectory/\033[0m\n' | |
| 9 | +printf '\033[37mFile.txt\033[0m\n' | |
| 10 | +printf '\033[32mExecutable\033[0m\n' | |
| 11 | + | |
| 12 | +echo "" | |
| 13 | +echo "Testing REVERSE (cursor highlight):" | |
| 14 | + | |
| 15 | +# Test 2: Reverse video with color | |
| 16 | +printf '\033[7m\033[34m\033[1mDirectory/\033[0m\n' | |
| 17 | +printf '\033[7m\033[37mFile.txt\033[0m\n' | |
| 18 | + | |
| 19 | +echo "" | |
| 20 | +echo "Testing sequence like fortress renders:" | |
| 21 | + | |
| 22 | +# Test 3: Full sequence like display.f90 does | |
| 23 | +printf '\033[34m\033[1mdir1/\033[0m\n' | |
| 24 | +printf '\033[7m\033[34m\033[1mdir2/\033[0m <- This should be highlighted\n' | |
| 25 | +printf '\033[37mfile1.txt\033[0m\n' | |
| 26 | + | |
| 27 | +echo "" | |
| 28 | +echo "If 'dir2/' above does NOT look different (reversed), that's the bug." | |
test/test_display_simaddedtest/test_display_sim.f90added@@ -0,0 +1,42 @@ | ||
| 1 | +program test_display_sim | |
| 2 | + use iso_fortran_env, only: output_unit | |
| 3 | + implicit none | |
| 4 | + | |
| 5 | + character(len=*), parameter :: ESC = char(27) | |
| 6 | + character(len=*), parameter :: REVERSE = ESC // "[7m" | |
| 7 | + character(len=*), parameter :: NOREVERSE = ESC // "[27m" | |
| 8 | + character(len=*), parameter :: RESET = ESC // "[0m" | |
| 9 | + character(len=*), parameter :: BLUE = ESC // "[34m" | |
| 10 | + character(len=*), parameter :: BOLD = ESC // "[1m" | |
| 11 | + character(len=*), parameter :: DIM = ESC // "[2m" | |
| 12 | + integer :: i | |
| 13 | + | |
| 14 | + write(output_unit, '(a)') "Simulating fortress display rendering:" | |
| 15 | + write(output_unit, *) | |
| 16 | + | |
| 17 | + ! Simulate rendering 5 lines in the middle pane | |
| 18 | + do i = 1, 5 | |
| 19 | + ! Separator (like fortress does) | |
| 20 | + write(output_unit, '(a)', advance='no') " │ " | |
| 21 | + | |
| 22 | + ! NOREVERSE at start of line (like our fix) | |
| 23 | + write(output_unit, '(a)', advance='no') NOREVERSE | |
| 24 | + | |
| 25 | + ! Render line | |
| 26 | + if (i == 3) then | |
| 27 | + ! This is the cursor line - should be reversed | |
| 28 | + write(output_unit, '(a)', advance='no') REVERSE // BLUE // BOLD // "CURSOR_LINE" | |
| 29 | + write(output_unit, '(a)', advance='no') NOREVERSE | |
| 30 | + write(output_unit, '(a)') RESET | |
| 31 | + else | |
| 32 | + ! Normal line - should NOT be reversed | |
| 33 | + write(output_unit, '(a)', advance='no') BLUE // BOLD // "normal_line_" // char(48+i) | |
| 34 | + write(output_unit, '(a)') RESET | |
| 35 | + end if | |
| 36 | + end do | |
| 37 | + | |
| 38 | + write(output_unit, *) | |
| 39 | + write(output_unit, '(a)') "If ALL lines above are reversed, we have a deeper issue" | |
| 40 | + write(output_unit, '(a)') "If only CURSOR_LINE is reversed, the code logic is correct" | |
| 41 | + | |
| 42 | +end program test_display_sim | |
test/test_fortran_ansiaddedtest/test_fortran_ansi.f90added@@ -0,0 +1,25 @@ | ||
| 1 | +program test_ansi | |
| 2 | + use iso_fortran_env, only: output_unit | |
| 3 | + implicit none | |
| 4 | + | |
| 5 | + character(len=*), parameter :: ESC = char(27) | |
| 6 | + character(len=*), parameter :: REVERSE = ESC // "[7m" | |
| 7 | + character(len=*), parameter :: NOREVERSE = ESC // "[27m" | |
| 8 | + character(len=*), parameter :: RESET = ESC // "[0m" | |
| 9 | + character(len=*), parameter :: BLUE = ESC // "[34m" | |
| 10 | + character(len=*), parameter :: BOLD = ESC // "[1m" | |
| 11 | + | |
| 12 | + ! Test 1: Reverse line followed by normal lines | |
| 13 | + write(output_unit, '(a)') "Test 1: One reversed line followed by normal lines" | |
| 14 | + write(output_unit, '(a)', advance='no') REVERSE // BLUE // BOLD // "CURSOR LINE" | |
| 15 | + write(output_unit, '(a)', advance='no') NOREVERSE | |
| 16 | + write(output_unit, '(a)') RESET | |
| 17 | + write(output_unit, '(a)') NOREVERSE // BLUE // BOLD // "Normal line 1" | |
| 18 | + write(output_unit, '(a)') NOREVERSE // BLUE // BOLD // "Normal line 2" | |
| 19 | + write(output_unit, '(a)') NOREVERSE // BLUE // BOLD // "Normal line 3" | |
| 20 | + | |
| 21 | + write(output_unit, *) | |
| 22 | + write(output_unit, '(a)') "If lines 1-3 above are reversed, the bug is in Fortran's output handling" | |
| 23 | + write(output_unit, '(a)') "If only CURSOR LINE is reversed, the fix is working" | |
| 24 | + | |
| 25 | +end program test_ansi | |
test/test_interactive.shadded@@ -0,0 +1,36 @@ | ||
| 1 | +#!/bin/bash | |
| 2 | +# This demonstrates the proper usage | |
| 3 | + | |
| 4 | +echo "==== FORTRESS CD-ON-EXIT TEST ====" | |
| 5 | +echo "" | |
| 6 | +echo "1. First, source the fortress function:" | |
| 7 | +echo " source ~/Documents/GithubOrgs/FortranGoingOnForty/fortress/fortress.sh" | |
| 8 | +echo "" | |
| 9 | +echo "2. Then run: fortress" | |
| 10 | +echo "" | |
| 11 | +echo "3. Navigate to a directory you want to cd to" | |
| 12 | +echo "" | |
| 13 | +echo "4. Press 'c' on that directory" | |
| 14 | +echo "" | |
| 15 | +echo "5. Your shell should cd to that directory" | |
| 16 | +echo "" | |
| 17 | +echo "==== TRY THIS IN YOUR TERMINAL ====" | |
| 18 | +echo "" | |
| 19 | +echo "Current directory: $(pwd)" | |
| 20 | +echo "" | |
| 21 | + | |
| 22 | +# Source fortress | |
| 23 | +source ~/Documents/GithubOrgs/FortranGoingOnForty/fortress/fortress.sh | |
| 24 | + | |
| 25 | +# Simulate what happens when you press 'c' in fortress | |
| 26 | +echo "Simulating: you pressed 'c' on the docs/ directory..." | |
| 27 | +mkdir -p ~/Documents/GithubOrgs/FortranGoingOnForty/fortress/docs | |
| 28 | +echo "~/Documents/GithubOrgs/FortranGoingOnForty/fortress/docs" > ~/.fortress_cd | |
| 29 | + | |
| 30 | +# This is what the fortress() function does after fortress exits | |
| 31 | +if [ -f "$HOME/.fortress_cd" ]; then | |
| 32 | + target_dir=$(cat "$HOME/.fortress_cd") | |
| 33 | + rm -f "$HOME/.fortress_cd" | |
| 34 | + cd "$target_dir" | |
| 35 | + echo "✓ Changed directory to: $(pwd)" | |
| 36 | +fi | |
test/test_reverse.shadded@@ -0,0 +1,16 @@ | ||
| 1 | +#!/bin/bash | |
| 2 | +# Test if RESET properly clears REVERSE mode | |
| 3 | + | |
| 4 | +echo "Test 1: REVERSE followed by RESET (ESC[0m)" | |
| 5 | +printf '\033[7mREVERSED LINE\033[0m\n' | |
| 6 | +printf 'Normal line 1\n' | |
| 7 | +printf 'Normal line 2\n' | |
| 8 | + | |
| 9 | +echo "" | |
| 10 | +echo "Test 2: REVERSE followed by explicit un-reverse (ESC[27m) then RESET" | |
| 11 | +printf '\033[7mREVERSED LINE\033[27m\033[0m\n' | |
| 12 | +printf 'Normal line 1\n' | |
| 13 | +printf 'Normal line 2\n' | |
| 14 | + | |
| 15 | +echo "" | |
| 16 | +echo "Which test shows 'Normal line 1' and 'Normal line 2' without reverse video?" | |