diff --git a/utils/cgrevent.go b/utils/cgrevent.go index 4b6cfeac8..3d196d7f0 100644 --- a/utils/cgrevent.go +++ b/utils/cgrevent.go @@ -44,7 +44,7 @@ func (ev *CGREvent) CheckMandatoryFields(fldNames []string) error { return nil } -// AnswerTime returns a field as string instance +// FieldAsString returns a field as string instance func (ev *CGREvent) FieldAsString(fldName string) (val string, err error) { iface, has := ev.Event[fldName] if !has { diff --git a/utils/cgrrecordwriter.go b/utils/cgrrecordwriter.go index bfa7f5c98..0a01552c4 100644 --- a/utils/cgrrecordwriter.go +++ b/utils/cgrrecordwriter.go @@ -23,22 +23,25 @@ import ( ) // Writer for one line, compatible with csv.Writer interface on Write +// Used in TP exporter type CgrRecordWriter interface { Write([]string) error Flush() } +// NewCgrIORecordWriter return CgrRecordWriter that will replace csv.Writer func NewCgrIORecordWriter(w io.Writer) *CgrIORecordWriter { return &CgrIORecordWriter{w: w} } +// CgrIORecordWriter implements CgrRecordWriter type CgrIORecordWriter struct { w io.Writer } -func (self *CgrIORecordWriter) Write(record []string) error { +func (rw *CgrIORecordWriter) Write(record []string) error { for _, fld := range append(record, "\n") { // Postpend the new line char and write record in the writer - if _, err := io.WriteString(self.w, fld); err != nil { + if _, err := io.WriteString(rw.w, fld); err != nil { return err } } @@ -46,6 +49,6 @@ func (self *CgrIORecordWriter) Write(record []string) error { } // ToDo: make sure we properly handle this method -func (self *CgrIORecordWriter) Flush() { +func (*CgrIORecordWriter) Flush() { return } diff --git a/utils/cgrrecordwriter_test.go b/utils/cgrrecordwriter_test.go new file mode 100644 index 000000000..d7e92ddce --- /dev/null +++ b/utils/cgrrecordwriter_test.go @@ -0,0 +1,55 @@ +/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ + +package utils + +import ( + "bytes" + "io" + "reflect" + "testing" +) + +func TestNewCgrIORecordWriter(t *testing.T) { + var args io.Writer + rcv := NewCgrIORecordWriter(args) + eOut := &CgrIORecordWriter{w: args} + if !reflect.DeepEqual(eOut, rcv) { + t.Errorf("Expecting %+v, received %+v", eOut, rcv) + } +} + +func TestWrite(t *testing.T) { + //empty check + args := new(bytes.Buffer) + rw := NewCgrIORecordWriter(args) + record := []string{"test1", "test2"} + rcv := rw.Write(record) + if rcv != nil { + t.Errorf("Expecting nil, received %+v", rcv) + } + eOut := "test1test2\n" + if !reflect.DeepEqual(eOut, args.String()) { + t.Errorf("Expected %q, received: %q", eOut, args.String()) + } + +} +func TestCgrIORecordWriterFlush(t *testing.T) { + rw := new(CgrIORecordWriter) + rw.Flush() +}