Skip to content

tanaka0325 / 課題2 #16

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 27 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add File struct
tanaka0325 committed Jul 20, 2020
commit e1e86ebf14ad3c2eb9d836de73282d5860b8081c
4 changes: 2 additions & 2 deletions kadai2/tanaka0325/imgconv/cmd/imgconv/main.go
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ func main() {
// convert
for _, path := range paths {
param := imgconv.ConvertParam{
Path: path,
File: imgconv.NewFile(path),
BeforeImage: imgconv.NewImage(*options.From),
AfterImage: imgconv.NewImage(*options.To),
FromExt: *options.From,
@@ -52,7 +52,7 @@ func main() {
onExit(err)
}
} else {
fmt.Printf("%[1]s.%[2]s => %[1]s.%[3]s\n", param.Path, param.FromExt, param.ToExt)
fmt.Printf("%[1]s.%[2]s => %[1]s.%[3]s\n", param.File.Path, param.FromExt, param.ToExt)
}
}
}
22 changes: 22 additions & 0 deletions kadai2/tanaka0325/imgconv/file.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package imgconv

import (
"io"
"os"
)

type OpenCreator interface {
Open() (io.ReadCloser, error)
Create() (io.WriteCloser, error)
}

type File struct {
Path string
}

func (f File) Open() (io.ReadCloser, error) { return os.Open(f.Path) }
func (f File) Create() (io.WriteCloser, error) { return os.Create(f.Path) }

func NewFile(p string) File {
return File{Path: p}
}
10 changes: 5 additions & 5 deletions kadai2/tanaka0325/imgconv/image.go
Original file line number Diff line number Diff line change
@@ -66,15 +66,15 @@ func (ip ImageTIFF) Encode(w io.Writer, i image.Image) error { return tiff.Encod
func NewImage(ext string) DecodeEncoder {
switch ext {
case "png":
return &ImagePNG{}
return ImagePNG{}
case "jpg", "jpeg":
return &ImageJPEG{}
return ImageJPEG{}
case "gif":
return &ImageGIF{}
return ImageGIF{}
case "bmp":
return &ImageBMP{}
return ImageBMP{}
case "tiff", "tif":
return &ImageTIFF{}
return ImageTIFF{}
}

return nil
10 changes: 3 additions & 7 deletions kadai2/tanaka0325/imgconv/imgconv.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
// Imgconv package is to convert images file format.
package imgconv

import (
"os"
)

type ConvertParam struct {
Path string
File File
BeforeImage Decoder
AfterImage Encoder
FromExt string
@@ -15,7 +11,7 @@ type ConvertParam struct {

func Do(param ConvertParam) (err error) {
// open file
r, err := os.Open(param.Path + "." + param.FromExt)
r, err := param.File.Open()
if err != nil {
return
}
@@ -28,7 +24,7 @@ func Do(param ConvertParam) (err error) {
}

// create file
w, err := os.Create(param.Path + "." + param.ToExt)
w, err := param.File.Create()
if err != nil {
return err
}
43 changes: 43 additions & 0 deletions kadai2/tanaka0325/imgconv/imgconv_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package imgconv_test

import (
"image"
"io"
"testing"

"github.com/gopherdojo/dojo8/kadai2/tanaka0325/imgconv"
)

type mockDecoder struct{}
type mockEncoder struct{}

func (m mockDecoder) Decode(io.Reader) (image.Image, error) { return nil, nil }
func (m mockEncoder) Encode(io.Writer, image.Image) error { return nil }

func TestImgConvDo(t *testing.T) {
md := mockDecoder{}
me := mockEncoder{}

tests := []struct {
name string
args imgconv.ConvertParam
isErr bool
}{
{
name: "ok",
args: imgconv.ConvertParam{
BeforeImage: md,
AfterImage: me,
},
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := imgconv.Do(tt.args)
if (tt.isErr && err == nil) || (!tt.isErr && err != nil) {
t.Errorf("expect err = %t, but got err = %s", tt.isErr, err)
}
})
}
}
3 changes: 1 addition & 2 deletions kadai2/tanaka0325/imgconv/options_test.go
Original file line number Diff line number Diff line change
@@ -42,8 +42,7 @@ func TestOptionsValidate(t *testing.T) {
From: &jpg,
To: &png,
},
args: allowedList,
isErr: false,
args: allowedList,
},
}