|  | #include <gtest/gtest.h> | 
|  | #include <torch/csrc/jit/mobile/nnc/registry.h> | 
|  |  | 
|  | namespace torch { | 
|  | namespace jit { | 
|  | namespace mobile { | 
|  | namespace nnc { | 
|  |  | 
|  | extern "C" { | 
|  | int generated_asm_kernel_foo(void**) { | 
|  | return 1; | 
|  | } | 
|  |  | 
|  | int generated_asm_kernel_bar(void**) { | 
|  | return 2; | 
|  | } | 
|  | } // extern "C" | 
|  |  | 
|  | REGISTER_NNC_KERNEL("foo:v1:VERTOKEN", generated_asm_kernel_foo) | 
|  | REGISTER_NNC_KERNEL("bar:v1:VERTOKEN", generated_asm_kernel_bar) | 
|  |  | 
|  | TEST(MobileNNCRegistryTest, FindAndRun) { | 
|  | auto foo_kernel = registry::get_nnc_kernel("foo:v1:VERTOKEN"); | 
|  | EXPECT_EQ(foo_kernel->execute(nullptr), 1); | 
|  |  | 
|  | auto bar_kernel = registry::get_nnc_kernel("bar:v1:VERTOKEN"); | 
|  | EXPECT_EQ(bar_kernel->execute(nullptr), 2); | 
|  | } | 
|  |  | 
|  | TEST(MobileNNCRegistryTest, NoKernel) { | 
|  | EXPECT_EQ(registry::has_nnc_kernel("missing"), false); | 
|  | } | 
|  |  | 
|  | } // namespace nnc | 
|  | } // namespace mobile | 
|  | } // namespace jit | 
|  | } // namespace torch |