URI: 
       item_test.go - hugo - [fork] hugo port for 9front
  HTML git clone https://git.drkhsh.at/hugo.git
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
   DIR LICENSE
       ---
       item_test.go (7394B)
       ---
            1 // Copyright 2019 The Hugo Authors. All rights reserved.
            2 //
            3 // Licensed under the Apache License, Version 2.0 (the "License");
            4 // you may not use this file except in compliance with the License.
            5 // You may obtain a copy of the License at
            6 // http://www.apache.org/licenses/LICENSE-2.0
            7 //
            8 // Unless required by applicable law or agreed to in writing, software
            9 // distributed under the License is distributed on an "AS IS" BASIS,
           10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
           11 // See the License for the specific language governing permissions and
           12 // limitations under the License.
           13 
           14 package pageparser
           15 
           16 import (
           17         "testing"
           18 
           19         qt "github.com/frankban/quicktest"
           20 )
           21 
           22 func TestItemValTyped(t *testing.T) {
           23         c := qt.New(t)
           24 
           25         source := []byte("3.14")
           26         c.Assert(Item{low: 0, high: len(source)}.ValTyped(source), qt.Equals, float64(3.14))
           27         source = []byte(".14")
           28         c.Assert(Item{low: 0, high: len(source)}.ValTyped(source), qt.Equals, float64(0.14))
           29         source = []byte("314")
           30         c.Assert(Item{low: 0, high: len(source)}.ValTyped(source), qt.Equals, 314)
           31         source = []byte("314")
           32         c.Assert(Item{low: 0, high: len(source), isString: true}.ValTyped(source), qt.Equals, "314")
           33         source = []byte("314x")
           34         c.Assert(Item{low: 0, high: len(source)}.ValTyped(source), qt.Equals, "314x")
           35         source = []byte("314 ")
           36         c.Assert(Item{low: 0, high: len(source)}.ValTyped(source), qt.Equals, "314 ")
           37         source = []byte("true")
           38         c.Assert(Item{low: 0, high: len(source)}.ValTyped(source), qt.Equals, true)
           39         source = []byte("false")
           40         c.Assert(Item{low: 0, high: len(source)}.ValTyped(source), qt.Equals, false)
           41         source = []byte("falsex")
           42         c.Assert(Item{low: 0, high: len(source)}.ValTyped(source), qt.Equals, "falsex")
           43         source = []byte("xfalse")
           44         c.Assert(Item{low: 0, high: len(source)}.ValTyped(source), qt.Equals, "xfalse")
           45         source = []byte("truex")
           46         c.Assert(Item{low: 0, high: len(source)}.ValTyped(source), qt.Equals, "truex")
           47         source = []byte("xtrue")
           48         c.Assert(Item{low: 0, high: len(source)}.ValTyped(source), qt.Equals, "xtrue")
           49 }
           50 
           51 func TestItemBoolMethods(t *testing.T) {
           52         c := qt.New(t)
           53 
           54         source := []byte("  shortcode ")
           55         tests := []struct {
           56                 name   string
           57                 item   Item
           58                 source []byte
           59                 want   bool
           60                 call   func(Item, []byte) bool
           61         }{
           62                 {
           63                         name: "IsText true",
           64                         item: Item{Type: tText},
           65                         call: func(i Item, _ []byte) bool { return i.IsText() },
           66                         want: true,
           67                 },
           68                 {
           69                         name: "IsIndentation false",
           70                         item: Item{Type: tText},
           71                         call: func(i Item, _ []byte) bool { return i.IsIndentation() },
           72                         want: false,
           73                 },
           74                 {
           75                         name: "IsShortcodeName",
           76                         item: Item{Type: tScName},
           77                         call: func(i Item, _ []byte) bool { return i.IsShortcodeName() },
           78                         want: true,
           79                 },
           80                 {
           81                         name: "IsNonWhitespace true",
           82                         item: Item{
           83                                 Type: tText,
           84                                 low:  2,
           85                                 high: 11,
           86                         },
           87                         source: source,
           88                         call:   func(i Item, src []byte) bool { return i.IsNonWhitespace(src) },
           89                         want:   true,
           90                 },
           91                 {
           92                         name: "IsShortcodeParam false",
           93                         item: Item{Type: tScParamVal},
           94                         call: func(i Item, _ []byte) bool { return i.IsShortcodeParam() },
           95                         want: false,
           96                 },
           97                 {
           98                         name: "IsInlineShortcodeName",
           99                         item: Item{Type: tScNameInline},
          100                         call: func(i Item, _ []byte) bool { return i.IsInlineShortcodeName() },
          101                         want: true,
          102                 },
          103                 {
          104                         name: "IsLeftShortcodeDelim tLeftDelimScWithMarkup",
          105                         item: Item{Type: tLeftDelimScWithMarkup},
          106                         call: func(i Item, _ []byte) bool { return i.IsLeftShortcodeDelim() },
          107                         want: true,
          108                 },
          109                 {
          110                         name: "IsLeftShortcodeDelim tLeftDelimScNoMarkup",
          111                         item: Item{Type: tLeftDelimScNoMarkup},
          112                         call: func(i Item, _ []byte) bool { return i.IsLeftShortcodeDelim() },
          113                         want: true,
          114                 },
          115                 {
          116                         name: "IsRightShortcodeDelim tRightDelimScWithMarkup",
          117                         item: Item{Type: tRightDelimScWithMarkup},
          118                         call: func(i Item, _ []byte) bool { return i.IsRightShortcodeDelim() },
          119                         want: true,
          120                 },
          121                 {
          122                         name: "IsRightShortcodeDelim tRightDelimScNoMarkup",
          123                         item: Item{Type: tRightDelimScNoMarkup},
          124                         call: func(i Item, _ []byte) bool { return i.IsRightShortcodeDelim() },
          125                         want: true,
          126                 },
          127                 {
          128                         name: "IsShortcodeClose",
          129                         item: Item{Type: tScClose},
          130                         call: func(i Item, _ []byte) bool { return i.IsShortcodeClose() },
          131                         want: true,
          132                 },
          133                 {
          134                         name: "IsShortcodeParamVal",
          135                         item: Item{Type: tScParamVal},
          136                         call: func(i Item, _ []byte) bool { return i.IsShortcodeParamVal() },
          137                         want: true,
          138                 },
          139                 {
          140                         name: "IsShortcodeMarkupDelimiter tLeftDelimScWithMarkup",
          141                         item: Item{Type: tLeftDelimScWithMarkup},
          142                         call: func(i Item, _ []byte) bool { return i.IsShortcodeMarkupDelimiter() },
          143                         want: true,
          144                 },
          145                 {
          146                         name: "IsShortcodeMarkupDelimiter tRightDelimScWithMarkup",
          147                         item: Item{Type: tRightDelimScWithMarkup},
          148                         call: func(i Item, _ []byte) bool { return i.IsShortcodeMarkupDelimiter() },
          149                         want: true,
          150                 },
          151                 {
          152                         name: "IsFrontMatter TypeFrontMatterYAML",
          153                         item: Item{Type: TypeFrontMatterYAML},
          154                         call: func(i Item, _ []byte) bool { return i.IsFrontMatter() },
          155                         want: true,
          156                 },
          157                 {
          158                         name: "IsFrontMatter TypeFrontMatterTOML",
          159                         item: Item{Type: TypeFrontMatterTOML},
          160                         call: func(i Item, _ []byte) bool { return i.IsFrontMatter() },
          161                         want: true,
          162                 },
          163                 {
          164                         name: "IsFrontMatter TypeFrontMatterJSON",
          165                         item: Item{Type: TypeFrontMatterJSON},
          166                         call: func(i Item, _ []byte) bool { return i.IsFrontMatter() },
          167                         want: true,
          168                 },
          169                 {
          170                         name: "IsFrontMatter TypeFrontMatterORG",
          171                         item: Item{Type: TypeFrontMatterORG},
          172                         call: func(i Item, _ []byte) bool { return i.IsFrontMatter() },
          173                         want: true,
          174                 },
          175                 {
          176                         name: "IsDone tError",
          177                         item: Item{Type: tError},
          178                         call: func(i Item, _ []byte) bool { return i.IsDone() },
          179                         want: true,
          180                 },
          181                 {
          182                         name: "IsDone tEOF",
          183                         item: Item{Type: tEOF},
          184                         call: func(i Item, _ []byte) bool { return i.IsDone() },
          185                         want: true,
          186                 },
          187                 {
          188                         name: "IsEOF",
          189                         item: Item{Type: tEOF},
          190                         call: func(i Item, _ []byte) bool { return i.IsEOF() },
          191                         want: true,
          192                 },
          193                 {
          194                         name: "IsError",
          195                         item: Item{Type: tError},
          196                         call: func(i Item, _ []byte) bool { return i.IsError() },
          197                         want: true,
          198                 },
          199         }
          200 
          201         for _, tt := range tests {
          202                 t.Run(tt.name, func(t *testing.T) {
          203                         got := tt.call(tt.item, tt.source)
          204                         c.Assert(got, qt.Equals, tt.want)
          205                 })
          206         }
          207 }
          208 
          209 func TestItem_ToString(t *testing.T) {
          210         c := qt.New(t)
          211 
          212         source := []byte("src")
          213         long := make([]byte, 100)
          214         for i := range long {
          215                 long[i] = byte(i)
          216         }
          217 
          218         tests := []struct {
          219                 name   string
          220                 item   Item
          221                 source []byte
          222                 want   string
          223                 call   func(Item, []byte) string
          224         }{
          225                 {
          226                         name: "EOF",
          227                         item: Item{Type: tEOF},
          228                         call: func(i Item, _ []byte) string { return i.ToString(source) },
          229                         want: "EOF",
          230                 },
          231                 {
          232                         name: "Error",
          233                         item: Item{Type: tError},
          234                         call: func(i Item, _ []byte) string { return i.ToString(source) },
          235                         want: "",
          236                 },
          237                 {
          238                         name: "Indentation",
          239                         item: Item{Type: tIndentation},
          240                         call: func(i Item, _ []byte) string { return i.ToString(source) },
          241                         want: "tIndentation:[]",
          242                 },
          243                 {
          244                         name: "Long",
          245                         item: Item{Type: tKeywordMarker + 1, low: 0, high: 100},
          246                         call: func(i Item, _ []byte) string { return i.ToString(long) },
          247                         want: "<" + string(long) + ">",
          248                 },
          249                 {
          250                         name: "Empty",
          251                         item: Item{Type: tKeywordMarker + 1},
          252                         call: func(i Item, _ []byte) string { return i.ToString([]byte("")) },
          253                         want: "<>",
          254                 },
          255         }
          256 
          257         for _, tt := range tests {
          258                 t.Run(tt.name, func(t *testing.T) {
          259                         got := tt.call(tt.item, tt.source)
          260                         c.Assert(got, qt.Equals, tt.want)
          261                 })
          262         }
          263 }