github.com/geofffranks/garden-linux@v0.0.0-20160715111146-26c893169cfa/process_tracker/writer/fake_writer_test.go (about)

     1  package writer_test
     2  
     3  import "sync"
     4  
     5  type fakeWriter struct {
     6  	mu             sync.Mutex
     7  	nWriteReturn   int
     8  	errWriteReturn error
     9  	bytesWritten   []byte
    10  	writeCallCount int
    11  
    12  	errCloseReturn error
    13  	closeCallCount int
    14  }
    15  
    16  func (fw *fakeWriter) Write(p []byte) (int, error) {
    17  	fw.mu.Lock()
    18  	defer fw.mu.Unlock()
    19  
    20  	fw.writeCallCount++
    21  	if fw.errWriteReturn != nil {
    22  		return 0, fw.errWriteReturn
    23  	}
    24  	fw.bytesWritten = p
    25  	return fw.nWriteReturn, nil
    26  }
    27  
    28  func (fw *fakeWriter) Close() error {
    29  	fw.mu.Lock()
    30  	defer fw.mu.Unlock()
    31  
    32  	fw.closeCallCount++
    33  	if fw.errCloseReturn != nil {
    34  		return fw.errCloseReturn
    35  	}
    36  	return nil
    37  }
    38  
    39  func (fw *fakeWriter) writeArgument() []byte {
    40  	fw.mu.Lock()
    41  	defer fw.mu.Unlock()
    42  
    43  	return fw.bytesWritten
    44  }
    45  
    46  func (fw *fakeWriter) writeCalls() int {
    47  	fw.mu.Lock()
    48  	defer fw.mu.Unlock()
    49  
    50  	return fw.writeCallCount
    51  }
    52  
    53  func (fw *fakeWriter) closeCalls() int {
    54  	fw.mu.Lock()
    55  	defer fw.mu.Unlock()
    56  
    57  	return fw.closeCallCount
    58  }