94 lines
2.4 KiB
Markdown
94 lines
2.4 KiB
Markdown
---
|
|
title: Statements
|
|
description: Statements control execution in the Flux functional data scripting language.
|
|
menu:
|
|
flux_v0_ref:
|
|
parent: Flux specification
|
|
name: Statements
|
|
weight: 112
|
|
aliases:
|
|
- /influxdb/v2/reference/flux/language/statements/
|
|
- /influxdb/cloud/reference/flux/language/statements/
|
|
---
|
|
|
|
A _statement_ controls execution.
|
|
|
|
```js
|
|
Statement = [ Attributes ] StatementInner .
|
|
StatementInner = OptionAssignment
|
|
| BuiltinStatement
|
|
| VariableAssignment
|
|
| ReturnStatement
|
|
| ExpressionStatement
|
|
| TestcaseStatement .
|
|
```
|
|
|
|
## Return statements
|
|
|
|
A terminating statement prevents execution of all statements that appear after it in the same block.
|
|
A return statement is a terminating statement.
|
|
|
|
```
|
|
ReturnStatement = "return" Expression .
|
|
```
|
|
## Expression statements
|
|
|
|
An _expression statement_ is an expression where the computed value is discarded.
|
|
|
|
```
|
|
ExpressionStatement = Expression .
|
|
```
|
|
|
|
##### Examples of expression statements
|
|
|
|
```js
|
|
1 + 1
|
|
f()
|
|
a
|
|
```
|
|
|
|
#### Testcase statements
|
|
|
|
A _testcase_ statement defines a test case.
|
|
|
|
{{% note %}}
|
|
Testcase statements only work within the context of a Flux development environment.
|
|
{{% /note %}}
|
|
|
|
```js
|
|
TestcaseStatement = "testcase" identifier [ TestcaseExtention ] Block .
|
|
TestcaseExtention = "extends" string_lit
|
|
```
|
|
|
|
Test cases are defined as a set of statements with special scoping rules.
|
|
Each test case statement in a file is considered to be its own main package.
|
|
In effect, all statements in package scope and all statements contained within
|
|
the test case statement are flattened into a single main package and executed.
|
|
Use the `testing` package from the standard library to control the pass failure
|
|
of the test case.
|
|
|
|
Test extension augments an existing test case with more statements or attributes.
|
|
A special function call, `super()`, must be made inside the body of a test case
|
|
extension. All statements from the parent test case will be executed in its place.
|
|
|
|
|
|
##### Basic testcase for addition
|
|
```js
|
|
import "testing"
|
|
|
|
testcase addition {
|
|
testing.assertEqualValues(got: 1 + 1, want: 2)
|
|
}
|
|
```
|
|
|
|
##### Example testcase extension to prevent feature regression
|
|
|
|
```js
|
|
@feature({vectorization: true})
|
|
testcase vector_addition extends "basics_test.addition" {
|
|
super()
|
|
}
|
|
```
|
|
|
|
{{< page-nav prev="/flux/v0/spec/packages/" next="/flux/v0/spec/side-effects/" >}}
|