| 116 | }; |
| 117 | |
| 118 | TEST_F(NodeDefBuilderTest, Simple) { |
| 119 | Op(OpDefBuilder("Simple").Input("a: int32").Output("out: float")); |
| 120 | |
| 121 | ExpectSuccess(Builder().Input("x", 0, DT_INT32), {DT_INT32}, {DT_FLOAT}, |
| 122 | R"proto( op: "Simple" input: "x" )proto"); |
| 123 | |
| 124 | // Port != 0 |
| 125 | ExpectSuccess(Builder().Input("y", 2, DT_INT32), {DT_INT32}, {DT_FLOAT}, |
| 126 | R"proto( op: "Simple" input: "y:2" )proto"); |
| 127 | |
| 128 | // FakeInput |
| 129 | ExpectSuccess(Builder().Input(FakeInput()), {DT_INT32}, {DT_FLOAT}, R"proto( |
| 130 | op: "Simple" input: "a" )proto"); |
| 131 | |
| 132 | ExpectSuccess(Builder().Input(FakeInput(DT_INT32)), {DT_INT32}, {DT_FLOAT}, |
| 133 | R"proto( op: "Simple" input: "a" )proto"); |
| 134 | |
| 135 | // Ref input |
| 136 | ExpectSuccess(Builder().Input(FakeInput(DT_INT32_REF)), {DT_INT32}, |
| 137 | {DT_FLOAT}, R"proto( op: "Simple" input: "a" )proto"); |
| 138 | |
| 139 | // ControlInput |
| 140 | ExpectSuccess( |
| 141 | Builder().ControlInput("x").Input(FakeInput()).ControlInput("y"), |
| 142 | {DT_INT32}, {DT_FLOAT}, R"proto( |
| 143 | op: "Simple" input: ["a", "^x", "^y"] )proto"); |
| 144 | |
| 145 | // Device |
| 146 | ExpectSuccess(Builder().Input(FakeInput()).Device("ddd"), {DT_INT32}, |
| 147 | {DT_FLOAT}, R"proto( |
| 148 | op: "Simple" input: "a" device: "ddd" )proto"); |
| 149 | |
| 150 | // Extra input |
| 151 | ExpectFailure(Builder().Input("x", 0, DT_INT32).Input("y", 0, DT_INT32), |
| 152 | "More Input() calls than the 1 input_args while building " |
| 153 | "NodeDef 'n' using Op<name=Simple; signature=a:int32 -> " |
| 154 | "out:float>"); |
| 155 | |
| 156 | // Missing input |
| 157 | ExpectFailure(Builder(), "0 inputs specified of 1 inputs in Op while"); |
| 158 | |
| 159 | { // Finalize() twice. |
| 160 | NodeDefBuilder& builder = Builder(); |
| 161 | // First call to Finalize() |
| 162 | TF_EXPECT_OK(builder.Input(FakeInput()).Finalize(nullptr)); |
| 163 | // ExpectSuccess() also calls Finalize(). |
| 164 | ExpectSuccess(builder, {DT_INT32}, {DT_FLOAT}, R"proto( |
| 165 | op: "Simple" input: "a" )proto"); |
| 166 | } |
| 167 | |
| 168 | { // Input() after Finalize() |
| 169 | NodeDefBuilder& builder = Builder(); |
| 170 | // Calling Finalize() before enough inputs -> error. |
| 171 | ExpectFailure(builder, "0 inputs specified of 1 inputs in Op while"); |
| 172 | builder.Input(FakeInput()); |
| 173 | // Calling Finalize() with enough inputs -> success |
| 174 | ExpectSuccess(builder, {DT_INT32}, {DT_FLOAT}, R"proto( |
| 175 | op: "Simple" input: "a" )proto"); |
nothing calls this directly
no test coverage detected