App-MultiSsh

 view release on metacpan or  search on metacpan

t/tmux.t  view on Meta::CPAN

test_tmux();
done_testing;

sub test_layout {
    my @data = (
        [['cmd1']],
        [['cmd1', 'cmd2']],
        [
            ['cmd1', 'cmd2'],
            ['cmd3'],
        ],
        [
            ['cmd1', 'cmd2'],
            ['cmd3', 'cmd4'],
        ],
        [
            ['cmd1', 'cmd2', 'cmd3'],
            ['cmd4', 'cmd5'],
        ],
        [
            ['cmd1', 'cmd2', 'cmd3'],
            ['cmd4', 'cmd5', 'cmd6'],
        ],
        [
            ['cmd1', 'cmd2', 'cmd3'],
            ['cmd4', 'cmd5', 'cmd6'],
            ['cmd7'],
        ],
        [
            ['cmd1', 'cmd2', 'cmd3'],
            ['cmd4', 'cmd5', 'cmd6'],
            ['cmd7', 'cmd8'],
        ],
        [
            ['cmd1', 'cmd2', 'cmd3'],
            ['cmd4', 'cmd5', 'cmd6'],
            ['cmd7', 'cmd8', 'cmd9'],
        ],
        [
            ['cmd1', 'cmd2', 'cmd3', 'cmd4'],
            ['cmd5', 'cmd6', 'cmd7', 'cmd8'],
            ['cmd9', 'cmd10'],
        ],
        [
            ['cmd1', 'cmd2', 'cmd3', 'cmd4'],
            ['cmd5', 'cmd6', 'cmd7', 'cmd8'],
            ['cmd9', 'cmd10', 'cmd11'],
        ],
    );

    for my $no (0 .. $#data) {
        my @test = map {'cmd' . ($_ + 1)} 0 .. $no;
        my $ans = App::MultiSsh::layout(@test);
        is_deeply $ans, $data[$no], ($no + 1) . " setup correctly"
            or diag "$no\n", explain $ans, "\n", $data[$no];
    }
}

sub test_tmux {
    my @data = (
        q{tmux new-session 'echo cmd1 '\;'cmd1 ' \\; select-layout tiled \\; setw synchronize-panes off},
        q{tmux new-session 'echo cmd1 '\;'cmd1 ' \\; split-window -d -p 50 'echo cmd2 '\;'cmd2 ' \\; select-layout tiled \\; setw synchronize-panes off},
        q{tmux new-session 'echo cmd1 '\;'cmd1 ' \\; split-window -d -p 33 'echo cmd2 '\;'cmd2 ' \\; split-window -d -p 33 'echo cmd3 '\;'cmd3 ' \\; select-layout tiled \\; setw synchronize-panes off},
        q{tmux new-session 'echo cmd1 '\;'cmd1 ' \\; split-window -d -p 25 'echo cmd2 '\;'cmd2 ' \\; split-window -d -p 25 'echo cmd3 '\;'cmd3 ' \\; split-window -d -p 25 'echo cmd4 '\;'cmd4 ' \\; select-layout tiled \\; setw synchronize-panes off},
        q{tmux new-session 'echo cmd1 '\;'cmd1 ' \\; split-window -d -p 20 'echo cmd2 '\;'cmd2 ' \\; split-window -d -p 20 'echo cmd3 '\;'cmd3 ' \\; split-window -d -p 20 'echo cmd4 '\;'cmd4 ' \\; split-window -d -p 20 'echo cmd5 '\;'cmd5 ' \\; selec...
    );

    for my $no (0 .. $#data) {
        my @test = map {'cmd' . ($_ + 1).' '} 0 .. $no;
        my $ans = App::MultiSsh::tmux({}, @test);
        is_deeply $ans, $data[$no], ($no + 1) . " setup correctly"
            or diag "$no\n", explain $ans, "\n", $data[$no];
    }
}



( run in 0.650 second using v1.01-cache-2.11-cpan-39bf76dae61 )