github.com/AlekSi/nut@v0.3.1-0.20130607203728-cce108d4135e/spec_test.go (about)

     1  package nut_test
     2  
     3  import (
     4  	"bytes"
     5  	"io/ioutil"
     6  	"os"
     7  
     8  	. "."
     9  	. "launchpad.net/gocheck"
    10  )
    11  
    12  type S struct {
    13  	s *Spec
    14  	b *bytes.Buffer
    15  }
    16  
    17  var _ = Suite(&S{})
    18  
    19  func (f *S) SetUpTest(c *C) {
    20  	file, err := os.Open("../test_nut1/nut.json")
    21  	c.Assert(err, IsNil)
    22  	defer file.Close()
    23  
    24  	b, err := ioutil.ReadAll(file)
    25  	c.Assert(err, IsNil)
    26  	f.b = bytes.NewBuffer(b)
    27  	file.Seek(0, 0)
    28  
    29  	s := new(Spec)
    30  	n, err := s.ReadFrom(file)
    31  	c.Assert(err, IsNil)
    32  	c.Assert(n, Equals, int64(f.b.Len()))
    33  	f.s = s
    34  }
    35  
    36  func (f *S) TestReadFromWriteTo(c *C) {
    37  	c.Check(f.s.Version.String(), Equals, "0.0.1")
    38  	c.Check(f.s.Vendor, Equals, "debug")
    39  	c.Check(len(f.s.Authors), Equals, 1)
    40  	c.Check(f.s.Authors[0], Equals, Person{FullName: "Alexey Palazhchenko", Email: "alexey.palazhchenko@gmail.com"})
    41  	c.Check(len(f.s.ExtraFiles), Equals, 2)
    42  	c.Check(f.s.ExtraFiles[0], Equals, "README")
    43  	c.Check(f.s.ExtraFiles[1], Equals, "LICENSE")
    44  
    45  	buf := new(bytes.Buffer)
    46  	n, err := f.s.WriteTo(buf)
    47  	c.Assert(err, IsNil)
    48  	c.Check(n, Equals, int64(f.b.Len()))
    49  	c.Check(buf.String(), Equals, f.b.String())
    50  }
    51  
    52  func (f *S) TestReadFile(c *C) {
    53  	s := new(Spec)
    54  	err := s.ReadFile("../test_nut1/nut.json")
    55  	c.Check(err, IsNil)
    56  	c.Check(s, DeepEquals, f.s)
    57  }
    58  
    59  func (f *S) TestVendorFormat(c *C) {
    60  	c.Check(VendorRegexp.MatchString("aleksi"), Equals, true)
    61  	c.Check(VendorRegexp.MatchString("42"), Equals, true)
    62  	c.Check(VendorRegexp.MatchString("weird-"), Equals, true)
    63  	c.Check(VendorRegexp.MatchString("weird_"), Equals, true)
    64  
    65  	c.Check(VendorRegexp.MatchString("AlekSi"), Equals, false) // :(
    66  	c.Check(VendorRegexp.MatchString("-weird"), Equals, false)
    67  	c.Check(VendorRegexp.MatchString("-"), Equals, false)
    68  	c.Check(VendorRegexp.MatchString("_weird"), Equals, false)
    69  	c.Check(VendorRegexp.MatchString("_"), Equals, false)
    70  }