1*1285115cSWilliam A. Kennington III // Copyright 2021 Google LLC 2*1285115cSWilliam A. Kennington III // 3*1285115cSWilliam A. Kennington III // Licensed under the Apache License, Version 2.0 (the "License"); 4*1285115cSWilliam A. Kennington III // you may not use this file except in compliance with the License. 5*1285115cSWilliam A. Kennington III // You may obtain a copy of the License at 6*1285115cSWilliam A. Kennington III // 7*1285115cSWilliam A. Kennington III // http://www.apache.org/licenses/LICENSE-2.0 8*1285115cSWilliam A. Kennington III // 9*1285115cSWilliam A. Kennington III // Unless required by applicable law or agreed to in writing, software 10*1285115cSWilliam A. Kennington III // distributed under the License is distributed on an "AS IS" BASIS, 11*1285115cSWilliam A. Kennington III // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*1285115cSWilliam A. Kennington III // See the License for the specific language governing permissions and 13*1285115cSWilliam A. Kennington III // limitations under the License. 14*1285115cSWilliam A. Kennington III 15*1285115cSWilliam A. Kennington III #include "ncsi_sockio.h" 16*1285115cSWilliam A. Kennington III #include "net_iface_mock.h" 17*1285115cSWilliam A. Kennington III 18*1285115cSWilliam A. Kennington III #include <gmock/gmock.h> 19*1285115cSWilliam A. Kennington III 20*1285115cSWilliam A. Kennington III TEST(TestSockIO, TestBind) 21*1285115cSWilliam A. Kennington III { 22*1285115cSWilliam A. Kennington III mock::IFace iface_mock; 23*1285115cSWilliam A. Kennington III constexpr int test_index = 5; 24*1285115cSWilliam A. Kennington III iface_mock.index = test_index; 25*1285115cSWilliam A. Kennington III 26*1285115cSWilliam A. Kennington III // This needs to be negative so that ncsi::SockIO 27*1285115cSWilliam A. Kennington III // won't try to close the socket upon desctrution. 28*1285115cSWilliam A. Kennington III constexpr int sock_fake_fd = -10; 29*1285115cSWilliam A. Kennington III ncsi::SockIO ncsi_sock(sock_fake_fd); 30*1285115cSWilliam A. Kennington III 31*1285115cSWilliam A. Kennington III ncsi_sock.bind_to_iface(iface_mock); 32*1285115cSWilliam A. Kennington III EXPECT_THAT(iface_mock.bound_socks.size(), testing::Ge(0)); 33*1285115cSWilliam A. Kennington III EXPECT_THAT(iface_mock.bound_socks, testing::Contains(sock_fake_fd)); 34*1285115cSWilliam A. Kennington III EXPECT_EQ(iface_mock.flags & IFF_PROMISC, IFF_PROMISC); 35*1285115cSWilliam A. Kennington III } 36