| 35 | namespace { |
| 36 | |
| 37 | TEST(EncodeWavOpTest, EncodeWavTest) { |
| 38 | Scope root = Scope::DisabledShapeInferenceScope(); |
| 39 | |
| 40 | Tensor audio_tensor(DT_FLOAT, {4, 2}); |
| 41 | test::FillValues<float>( |
| 42 | &audio_tensor, {0.0f, 0.5f, 1.0f, -1.0f, 0.25f, 0.75f, 1.25f, -0.5f}); |
| 43 | Output audio_op = |
| 44 | Const(root.WithOpName("audio_op"), Input::Initializer(audio_tensor)); |
| 45 | |
| 46 | Output sample_rate_op = Const(root.WithOpName("sample_rate_op"), 44100); |
| 47 | |
| 48 | EncodeWav encode_wav_op = |
| 49 | EncodeWav(root.WithOpName("encode_wav_op"), audio_op, sample_rate_op); |
| 50 | |
| 51 | DecodeWav decode_wav_op = |
| 52 | DecodeWav(root.WithOpName("decode_wav_op"), encode_wav_op); |
| 53 | |
| 54 | TF_ASSERT_OK(root.status()); |
| 55 | |
| 56 | ClientSession session(root); |
| 57 | std::vector<Tensor> outputs; |
| 58 | |
| 59 | TF_EXPECT_OK(session.Run(ClientSession::FeedType(), |
| 60 | {decode_wav_op.audio, decode_wav_op.sample_rate}, |
| 61 | &outputs)); |
| 62 | |
| 63 | const Tensor& audio = outputs[0]; |
| 64 | const int sample_rate = outputs[1].flat<int32>()(0); |
| 65 | |
| 66 | EXPECT_EQ(2, audio.dims()); |
| 67 | EXPECT_EQ(2, audio.dim_size(1)); |
| 68 | EXPECT_EQ(4, audio.dim_size(0)); |
| 69 | EXPECT_NEAR(0.0f, audio.flat<float>()(0), 1e-4f); |
| 70 | EXPECT_NEAR(0.5f, audio.flat<float>()(1), 1e-4f); |
| 71 | EXPECT_NEAR(1.0f, audio.flat<float>()(2), 1e-4f); |
| 72 | EXPECT_NEAR(-1.0f, audio.flat<float>()(3), 1e-4f); |
| 73 | EXPECT_NEAR(0.25f, audio.flat<float>()(4), 1e-4f); |
| 74 | EXPECT_NEAR(0.75f, audio.flat<float>()(5), 1e-4f); |
| 75 | EXPECT_NEAR(1.0f, audio.flat<float>()(6), 1e-4f); |
| 76 | EXPECT_NEAR(-0.5f, audio.flat<float>()(7), 1e-4f); |
| 77 | EXPECT_EQ(44100, sample_rate); |
| 78 | } |
| 79 | |
| 80 | } // namespace |
| 81 | } // namespace ops |
nothing calls this directly
no test coverage detected