[TOC]

# fidl.test.consts






## **ENUMS**

### EnumType {#EnumType}
Type: <code>int32</code>

*Defined in [fidl.test.consts/consts.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#14)*



<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="EnumType.VALUE">
            <td><code>VALUE</code></td>
            <td><code>1</code></td>
            <td></td>
        </tr><tr id="EnumType.true">
            <td><code>true</code></td>
            <td><code>2</code></td>
            <td></td>
        </tr></table>







## **BITS**

### BitsType {#BitsType}
Type: <code>uint32</code>

*Defined in [fidl.test.consts/consts.test.fidl](https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#23)*



<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="BitsType.VALUE">
            <td>VALUE</td>
            <td>1</td>
            <td></td>
        </tr><tr id="BitsType.true">
            <td>true</td>
            <td>2</td>
            <td></td>
        </tr></table>



## **CONSTANTS**

<table>
    <tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr><tr id="ANSWER">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#5">ANSWER</a></td>
            <td>
                    <code>42</code>
                </td>
                <td><code>uint16</code></td>
            <td></td>
        </tr>
    <tr id="ANSWER_IN_BINARY">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#6">ANSWER_IN_BINARY</a></td>
            <td>
                    <code>42</code>
                </td>
                <td><code>uint16</code></td>
            <td></td>
        </tr>
    <tr id="CONVERSION_FACTOR">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#12">CONVERSION_FACTOR</a></td>
            <td>
                    <code>1.41421</code>
                </td>
                <td><code>float64</code></td>
            <td></td>
        </tr>
    <tr id="DIAMOND">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#8">DIAMOND</a></td>
            <td>
                    <code>1746410393481133080</code>
                </td>
                <td><code>uint64</code></td>
            <td></td>
        </tr>
    <tr id="ENABLED_FLAG">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#3">ENABLED_FLAG</a></td>
            <td>
                    <code>true</code>
                </td>
                <td><code>bool</code></td>
            <td></td>
        </tr>
    <tr id="FUCHSIA">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#9">FUCHSIA</a></td>
            <td>
                    <code>4054509061583223046</code>
                </td>
                <td><code>uint64</code></td>
            <td></td>
        </tr>
    <tr id="MIN_TEMP">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#11">MIN_TEMP</a></td>
            <td>
                    <code>-273.15</code>
                </td>
                <td><code>float32</code></td>
            <td></td>
        </tr>
    <tr id="OFFSET">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#4">OFFSET</a></td>
            <td>
                    <code>-33</code>
                </td>
                <td><code>int8</code></td>
            <td></td>
        </tr>
    <tr id="POPULATION_USA_2018">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#7">POPULATION_USA_2018</a></td>
            <td>
                    <code>330000000</code>
                </td>
                <td><code>uint32</code></td>
            <td></td>
        </tr>
    <tr id="USERNAME">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#10">USERNAME</a></td>
            <td><code>&quot;squeenze&quot;</code></td>
                    <td><code>String</code></td>
            <td></td>
        </tr>
    <tr id="bitsPrimitiveTrue">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#30">bitsPrimitiveTrue</a></td>
            <td>
                    <code><a class='link' href='#BitsType.true'>BitsType.true</a></code>
                </td>
                <td><code>int32</code></td>
            <td></td>
        </tr>
    <tr id="bitsPrimitiveVal">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#28">bitsPrimitiveVal</a></td>
            <td>
                    <code><a class='link' href='#BitsType.VALUE'>BitsType.VALUE</a></code>
                </td>
                <td><code>int32</code></td>
            <td></td>
        </tr>
    <tr id="bitsTrue">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#29">bitsTrue</a></td>
            
            <td></td>
        </tr>
    <tr id="bitsVal">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#27">bitsVal</a></td>
            
            <td></td>
        </tr>
    <tr id="enumPrimitiveTrue">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#21">enumPrimitiveTrue</a></td>
            <td>
                    <code><a class='link' href='#EnumType.true'>EnumType.true</a></code>
                </td>
                <td><code>int32</code></td>
            <td></td>
        </tr>
    <tr id="enumPrimitiveVal">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#19">enumPrimitiveVal</a></td>
            <td>
                    <code><a class='link' href='#EnumType.VALUE'>EnumType.VALUE</a></code>
                </td>
                <td><code>int32</code></td>
            <td></td>
        </tr>
    <tr id="enumTrue">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#20">enumTrue</a></td>
            
            <td></td>
        </tr>
    <tr id="enumVal">
            <td><a href="https://fuchsia.googlesource.com/fuchsia/+/master/zircon/tools/fidl/testdata/consts.test.fidl#18">enumVal</a></td>
            
            <td></td>
        </tr>
    
</table>



