From 8de1355d14255c51eda0d971142f751967ece779 Mon Sep 17 00:00:00 2001 From: Shai Nagar Date: Fri, 28 May 2021 15:25:48 +0300 Subject: [PATCH] matix refresh interval -> param (#8) --- internal/main.go | 5 +++-- matrix.go | 11 +++-------- matrix_test.go | 16 ++++++++-------- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/internal/main.go b/internal/main.go index faf7ce6..cd281d9 100644 --- a/internal/main.go +++ b/internal/main.go @@ -40,7 +40,8 @@ func demo(t termite.Terminal) { func demoMatrix(t termite.Terminal) { printTitle("Matrix Layout", t) - m := termite.NewMatrix(t) + refreshInterval := time.Millisecond * 10 + m := termite.NewMatrix(t, refreshInterval) cancel := m.Start() lines := []io.StringWriter{ @@ -48,7 +49,7 @@ func demoMatrix(t termite.Terminal) { } for i := 0; i < 100; i++ { - time.Sleep(time.Millisecond * 10) + time.Sleep(refreshInterval) lines[i%len(lines)].WriteString(fmt.Sprintf("- Matrix Line -> version %d", i+1)) } diff --git a/matrix.go b/matrix.go index 729ac50..1e7c11f 100644 --- a/matrix.go +++ b/matrix.go @@ -10,7 +10,6 @@ import ( // Matrix is a multiline structure that reflects its state on screen type Matrix interface { - StringWriter() io.StringWriter RefreshInterval() time.Duration NewLineStringWriter() io.StringWriter NewLineWriter() io.Writer @@ -34,20 +33,16 @@ type matrixLineWriter struct { matrix *terminalMatrix } -// NewMatrix creates a new Matrix for the specified Terminal -func NewMatrix(writer io.StringWriter) Matrix { +// NewMatrix creates a new matrix that writes to the specified writer and refreshes every refreshInterval. +func NewMatrix(writer io.StringWriter, refreshInterval time.Duration) Matrix { return &terminalMatrix{ lines: []string{}, - refreshInterval: time.Millisecond * 100, + refreshInterval: refreshInterval, writer: writer, mx: &sync.RWMutex{}, } } -func (m *terminalMatrix) StringWriter() io.StringWriter { - return m.writer -} - func (m *terminalMatrix) RefreshInterval() time.Duration { return m.refreshInterval } diff --git a/matrix_test.go b/matrix_test.go index 7aca917..8977d17 100644 --- a/matrix_test.go +++ b/matrix_test.go @@ -15,7 +15,7 @@ import ( func TestMatrixWritesToTerminalOutput(t *testing.T) { examples := generateMultiLineExamples(3) - matrix, cancel := startMatrix() + matrix, cancel := startNewMatrix() defer cancel() matrix.NewLineStringWriter().WriteString(examples[0]) @@ -28,7 +28,7 @@ func TestMatrixWritesToTerminalOutput(t *testing.T) { func TestMatrixUpdatesTerminalOutput(t *testing.T) { examples := generateMultiLineExamples(3) - matrix, cancel := startMatrix() + matrix, cancel := startNewMatrix() defer cancel() matrix.NewLineStringWriter().WriteString(examples[0]) @@ -44,7 +44,7 @@ func TestMatrixUpdatesTerminalOutput(t *testing.T) { func TestMatrixStructure(t *testing.T) { examples := generateMultiLineExamples(3) - matrix, cancel := startMatrix() + matrix, cancel := startNewMatrix() defer cancel() matrix.NewLineStringWriter().WriteString(examples[0]) @@ -57,10 +57,10 @@ func TestMatrixStructure(t *testing.T) { func TestWriterLineInterface(t *testing.T) { example := generateRandomString() - matrix1, cancel1 := startMatrix() + matrix1, cancel1 := startNewMatrix() defer cancel1() - matrix2, cancel2 := startMatrix() + matrix2, cancel2 := startNewMatrix() defer cancel2() matrix1.NewLineStringWriter().WriteString(example) @@ -72,7 +72,7 @@ func TestWriterLineInterface(t *testing.T) { func assertEventualSequence(t *testing.T, matrix Matrix, examples []string) { contantsAllExamplesInOrderFn := func() bool { return strings.Contains( - matrix.StringWriter().(*fakeTerm).Out.String(), + matrix.(*terminalMatrix).writer.(*fakeTerm).Out.String(), expectedOutputSequenceFor(examples), ) } @@ -93,9 +93,9 @@ func expectedOutputSequenceFor(examples []string) string { return buf.String() } -func startMatrix() (Matrix, context.CancelFunc) { +func startNewMatrix() (Matrix, context.CancelFunc) { term := NewFakeTerminal(80, 80) - matrix := NewMatrix(term) + matrix := NewMatrix(term, time.Millisecond) cancel := matrix.Start() return matrix, cancel