diff --git a/proxy/data.go b/proxy/data.go index 76fb0cd..bf184fd 100644 --- a/proxy/data.go +++ b/proxy/data.go @@ -16,6 +16,7 @@ package proxy import ( + "bytes" "fmt" "net/url" "strconv" @@ -41,7 +42,21 @@ type Options struct { } func (o Options) String() string { - return fmt.Sprintf("%vx%v", o.Width, o.Height) + buf := new(bytes.Buffer) + fmt.Fprintf(buf, "%vx%v", o.Width, o.Height) + if o.Fit { + buf.WriteString(",fit") + } + if o.Rotate != 0 { + fmt.Fprintf(buf, ",r%d", o.Rotate) + } + if o.FlipVertical { + buf.WriteString(",fv") + } + if o.FlipHorizontal { + buf.WriteString(",fh") + } + return buf.String() } func ParseOptions(str string) *Options { diff --git a/proxy/data_test.go b/proxy/data_test.go new file mode 100644 index 0000000..0a6ee81 --- /dev/null +++ b/proxy/data_test.go @@ -0,0 +1,36 @@ +// Copyright 2013 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package proxy + +import "testing" + +func TestOptions_String(t *testing.T) { + tests := []struct { + Options *Options + String string + }{ + {emptyOptions, "0x0"}, + { + &Options{1, 2, true, 90, true, true}, + "1x2,fit,r90,fv,fh", + }, + } + + for i, tt := range tests { + if got, want := tt.Options.String(), tt.String; got != want { + t.Errorf("%d. Options.String returned %v, want %v", i, got, want) + } + } +}