If using a frozen class with slots, add __getstate__ and __setstate__ to set the instance values. (GH-25786)

diff --git a/Lib/test/test_dataclasses.py b/Lib/test/test_dataclasses.py
index 2fa0ae0..16ee4c7 100644
--- a/Lib/test/test_dataclasses.py
+++ b/Lib/test/test_dataclasses.py
@@ -2833,6 +2833,19 @@ class A:
         self.assertFalse(hasattr(A, "__slots__"))
         self.assertTrue(hasattr(B, "__slots__"))
 
+    # Can't be local to test_frozen_pickle.
+    @dataclass(frozen=True, slots=True)
+    class FrozenSlotsClass:
+        foo: str
+        bar: int
+
+    def test_frozen_pickle(self):
+        # bpo-43999
+
+        assert self.FrozenSlotsClass.__slots__ == ("foo", "bar")
+        p = pickle.dumps(self.FrozenSlotsClass("a", 1))
+        assert pickle.loads(p) == self.FrozenSlotsClass("a", 1)
+
 
 class TestDescriptors(unittest.TestCase):
     def test_set_name(self):