当前位置: 首页>>代码示例>>Golang>>正文


Golang influxql.NewScanner函数代码示例

本文整理汇总了Golang中github.com/influxdb/influxdb/influxql.NewScanner函数的典型用法代码示例。如果您正苦于以下问题:Golang NewScanner函数的具体用法?Golang NewScanner怎么用?Golang NewScanner使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了NewScanner函数的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: TestScanRegex

// Test scanning regex
func TestScanRegex(t *testing.T) {
	var tests = []struct {
		in  string
		tok influxql.Token
		lit string
		err string
	}{
		{in: `/^payments\./`, tok: influxql.REGEX, lit: `^payments\.`},
		{in: `/foo\/bar/`, tok: influxql.REGEX, lit: `foo/bar`},
		{in: `/foo\\/bar/`, tok: influxql.REGEX, lit: `foo\/bar`},
		{in: `/foo\\bar/`, tok: influxql.REGEX, lit: `foo\\bar`},
		{in: `/http\:\/\/www\.example\.com/`, tok: influxql.REGEX, lit: `http\://www\.example\.com`},
	}

	for i, tt := range tests {
		s := influxql.NewScanner(strings.NewReader(tt.in))
		tok, _, lit := s.ScanRegex()
		if tok != tt.tok {
			t.Errorf("%d. %s: error:\n\texp=%s\n\tgot=%s\n", i, tt.in, tt.tok.String(), tok.String())
		}
		if lit != tt.lit {
			t.Errorf("%d. %s: error:\n\texp=%s\n\tgot=%s\n", i, tt.in, tt.lit, lit)
		}
	}
}
开发者ID:nrshrivatsan,项目名称:influxdb,代码行数:26,代码来源:scanner_test.go

示例2: TestScanner_Scan_Multi

// Ensure the scanner can scan a series of tokens correctly.
func TestScanner_Scan_Multi(t *testing.T) {
	type result struct {
		tok influxql.Token
		pos influxql.Pos
		lit string
	}
	exp := []result{
		{tok: influxql.SELECT, pos: influxql.Pos{Line: 0, Char: 0}, lit: ""},
		{tok: influxql.WS, pos: influxql.Pos{Line: 0, Char: 6}, lit: " "},
		{tok: influxql.IDENT, pos: influxql.Pos{Line: 0, Char: 7}, lit: "value"},
		{tok: influxql.WS, pos: influxql.Pos{Line: 0, Char: 12}, lit: " "},
		{tok: influxql.FROM, pos: influxql.Pos{Line: 0, Char: 13}, lit: ""},
		{tok: influxql.WS, pos: influxql.Pos{Line: 0, Char: 17}, lit: " "},
		{tok: influxql.IDENT, pos: influxql.Pos{Line: 0, Char: 18}, lit: "myseries"},
		{tok: influxql.WS, pos: influxql.Pos{Line: 0, Char: 26}, lit: " "},
		{tok: influxql.WHERE, pos: influxql.Pos{Line: 0, Char: 27}, lit: ""},
		{tok: influxql.WS, pos: influxql.Pos{Line: 0, Char: 32}, lit: " "},
		{tok: influxql.IDENT, pos: influxql.Pos{Line: 0, Char: 33}, lit: "a"},
		{tok: influxql.WS, pos: influxql.Pos{Line: 0, Char: 34}, lit: " "},
		{tok: influxql.EQ, pos: influxql.Pos{Line: 0, Char: 35}, lit: ""},
		{tok: influxql.WS, pos: influxql.Pos{Line: 0, Char: 36}, lit: " "},
		{tok: influxql.STRING, pos: influxql.Pos{Line: 0, Char: 36}, lit: "b"},
		{tok: influxql.EOF, pos: influxql.Pos{Line: 0, Char: 40}, lit: ""},
	}

	// Create a scanner.
	v := `SELECT value from myseries WHERE a = 'b'`
	s := influxql.NewScanner(strings.NewReader(v))

	// Continually scan until we reach the end.
	var act []result
	for {
		tok, pos, lit := s.Scan()
		act = append(act, result{tok, pos, lit})
		if tok == influxql.EOF {
			break
		}
	}

	// Verify the token counts match.
	if len(exp) != len(act) {
		t.Fatalf("token count mismatch: exp=%d, got=%d", len(exp), len(act))
	}

	// Verify each token matches.
	for i := range exp {
		if !reflect.DeepEqual(exp[i], act[i]) {
			t.Fatalf("%d. token mismatch:\n\nexp=%#v\n\ngot=%#v", i, exp[i], act[i])
		}
	}
}
开发者ID:nrshrivatsan,项目名称:influxdb,代码行数:52,代码来源:scanner_test.go

示例3: TestScanner_Scan


//.........这里部分代码省略.........
		{s: `100`, tok: influxql.NUMBER, lit: `100`},
		{s: `100.23`, tok: influxql.NUMBER, lit: `100.23`},
		{s: `+100.23`, tok: influxql.NUMBER, lit: `+100.23`},
		{s: `-100.23`, tok: influxql.NUMBER, lit: `-100.23`},
		{s: `-100.`, tok: influxql.NUMBER, lit: `-100`},
		{s: `.23`, tok: influxql.NUMBER, lit: `.23`},
		{s: `+.23`, tok: influxql.NUMBER, lit: `+.23`},
		{s: `-.23`, tok: influxql.NUMBER, lit: `-.23`},
		//{s: `.`, tok: influxql.ILLEGAL, lit: `.`},
		{s: `-.`, tok: influxql.SUB, lit: ``},
		{s: `+.`, tok: influxql.ADD, lit: ``},
		{s: `10.3s`, tok: influxql.NUMBER, lit: `10.3`},

		// Durations
		{s: `10u`, tok: influxql.DURATION_VAL, lit: `10u`},
		{s: `10µ`, tok: influxql.DURATION_VAL, lit: `10µ`},
		{s: `10ms`, tok: influxql.DURATION_VAL, lit: `10ms`},
		{s: `-1s`, tok: influxql.DURATION_VAL, lit: `-1s`},
		{s: `10m`, tok: influxql.DURATION_VAL, lit: `10m`},
		{s: `10h`, tok: influxql.DURATION_VAL, lit: `10h`},
		{s: `10d`, tok: influxql.DURATION_VAL, lit: `10d`},
		{s: `10w`, tok: influxql.DURATION_VAL, lit: `10w`},
		{s: `10x`, tok: influxql.NUMBER, lit: `10`}, // non-duration unit

		// Keywords
		{s: `ALL`, tok: influxql.ALL},
		{s: `ALTER`, tok: influxql.ALTER},
		{s: `AS`, tok: influxql.AS},
		{s: `ASC`, tok: influxql.ASC},
		{s: `BEGIN`, tok: influxql.BEGIN},
		{s: `BY`, tok: influxql.BY},
		{s: `CREATE`, tok: influxql.CREATE},
		{s: `CONTINUOUS`, tok: influxql.CONTINUOUS},
		{s: `DATABASE`, tok: influxql.DATABASE},
		{s: `DATABASES`, tok: influxql.DATABASES},
		{s: `DEFAULT`, tok: influxql.DEFAULT},
		{s: `DELETE`, tok: influxql.DELETE},
		{s: `DESC`, tok: influxql.DESC},
		{s: `DROP`, tok: influxql.DROP},
		{s: `DURATION`, tok: influxql.DURATION},
		{s: `END`, tok: influxql.END},
		{s: `EXISTS`, tok: influxql.EXISTS},
		{s: `EXPLAIN`, tok: influxql.EXPLAIN},
		{s: `FIELD`, tok: influxql.FIELD},
		{s: `FROM`, tok: influxql.FROM},
		{s: `GRANT`, tok: influxql.GRANT},
		{s: `GROUP`, tok: influxql.GROUP},
		{s: `IF`, tok: influxql.IF},
		{s: `INNER`, tok: influxql.INNER},
		{s: `INSERT`, tok: influxql.INSERT},
		{s: `INTO`, tok: influxql.INTO},
		{s: `KEY`, tok: influxql.KEY},
		{s: `KEYS`, tok: influxql.KEYS},
		{s: `LIMIT`, tok: influxql.LIMIT},
		{s: `SHOW`, tok: influxql.SHOW},
		{s: `SHARDS`, tok: influxql.SHARDS},
		{s: `MEASUREMENT`, tok: influxql.MEASUREMENT},
		{s: `MEASUREMENTS`, tok: influxql.MEASUREMENTS},
		{s: `NOT`, tok: influxql.NOT},
		{s: `OFFSET`, tok: influxql.OFFSET},
		{s: `ON`, tok: influxql.ON},
		{s: `ORDER`, tok: influxql.ORDER},
		{s: `PASSWORD`, tok: influxql.PASSWORD},
		{s: `POLICY`, tok: influxql.POLICY},
		{s: `POLICIES`, tok: influxql.POLICIES},
		{s: `PRIVILEGES`, tok: influxql.PRIVILEGES},
		{s: `QUERIES`, tok: influxql.QUERIES},
		{s: `QUERY`, tok: influxql.QUERY},
		{s: `READ`, tok: influxql.READ},
		{s: `RENAME`, tok: influxql.RENAME},
		{s: `RETENTION`, tok: influxql.RETENTION},
		{s: `REVOKE`, tok: influxql.REVOKE},
		{s: `SELECT`, tok: influxql.SELECT},
		{s: `SERIES`, tok: influxql.SERIES},
		{s: `SERVER`, tok: influxql.SERVER},
		{s: `SERVERS`, tok: influxql.SERVERS},
		{s: `TAG`, tok: influxql.TAG},
		{s: `TO`, tok: influxql.TO},
		{s: `USER`, tok: influxql.USER},
		{s: `USERS`, tok: influxql.USERS},
		{s: `VALUES`, tok: influxql.VALUES},
		{s: `WHERE`, tok: influxql.WHERE},
		{s: `WITH`, tok: influxql.WITH},
		{s: `WRITE`, tok: influxql.WRITE},
		{s: `explain`, tok: influxql.EXPLAIN}, // case insensitive
		{s: `seLECT`, tok: influxql.SELECT},   // case insensitive
	}

	for i, tt := range tests {
		s := influxql.NewScanner(strings.NewReader(tt.s))
		tok, pos, lit := s.Scan()
		if tt.tok != tok {
			t.Errorf("%d. %q token mismatch: exp=%q got=%q <%q>", i, tt.s, tt.tok, tok, lit)
		} else if tt.pos.Line != pos.Line || tt.pos.Char != pos.Char {
			t.Errorf("%d. %q pos mismatch: exp=%#v got=%#v", i, tt.s, tt.pos, pos)
		} else if tt.lit != lit {
			t.Errorf("%d. %q literal mismatch: exp=%q got=%q", i, tt.s, tt.lit, lit)
		}
	}
}
开发者ID:nrshrivatsan,项目名称:influxdb,代码行数:101,代码来源:scanner_test.go


注:本文中的github.com/influxdb/influxdb/influxql.NewScanner函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。