input: Write a python function to create and test the TextClassificationModel class.
  assert isinstance(TextClassificationModel(10000, 300, 2, 0.5), nn.Module)
  assert isinstance(TextClassificationModel(5000, 128, 10, 0.3).embedding, nn.Embedding)
  assert isinstance(TextClassificationModel(20000, 256, 5, 0.2).fc, nn.Linear)
output: import torch.nn as nn
  
  class TextClassificationModel(nn.Module):
      def __init__(self, vocab_size, embed_dim, num_classes, dropout_rate):
          super(TextClassificationModel, self).__init__()
          self.embedding = nn.Embedding(vocab_size, embed_dim)
          self.dropout = nn.Dropout(dropout_rate)
          self.fc = nn.Linear(embed_dim, num_classes)
      
      def forward(self, x):
          x = self.embedding(x)
          x = self.dropout(x)
          x = x.mean(dim=1)  # Global average pooling (assuming input is padded sequences)
          x = self.fc(x)
          return x