class_docstr: This class tests all functions of the ArithmeticSharedTensor.
docstr: Test dot product of vector and encrypted tensor.
docstr_tok: ["Test","dot","product","of","vector","and","encrypted","tensor","."]
code: def test_dot_ger(self) -> None:
      """Test dot product of vector and encrypted tensor."""
      for tensor_type in [lambda x: x, ArithmeticSharedTensor]:
          tensor1 = get_random_test_tensor(is_float=True).squeeze()
          tensor2 = get_random_test_tensor(is_float=True).squeeze()
          dot_reference = tensor1.dot(tensor2)
          ger_reference = torch.outer(tensor1, tensor2)
  
          tensor2 = tensor_type(tensor2)
  
          # dot
          encrypted_tensor = ArithmeticSharedTensor(tensor1)
          encrypted_out = encrypted_tensor.dot(tensor2)
          self._check(
              encrypted_out,
              dot_reference,
              "%s dot product failed" % "private"
              if tensor_type == ArithmeticSharedTensor
              else "public",
          )
  
          # ger
          encrypted_tensor = ArithmeticSharedTensor(tensor1)
          encrypted_out = encrypted_tensor.ger(tensor2)
          self._check(
              encrypted_out,
              ger_reference,
              "%s outer product failed" % "private"
              if tensor_type == ArithmeticSharedTensor
              else "public",
          )
  
imports: import itertools
  import logging
  import unittest
  import crypten
  import crypten.communicator
  import torch
  import torch.nn.functional
  from crypten.common.rng import generate_random_ring_element
  from crypten.common.tensor_types import is_float_tensor
  from crypten.common.util import count_wraps
  from crypten.mpc.primitives import ArithmeticSharedTensor
  from test.multiprocess_test_case import get_random_test_tensor, MultiProcessTestCase
label_desc: Use image node_id 13 for calling the TestArithmetic obj's underlying member method code with example usage: obj.test_dot_ger() without return types