code: def test_is_unclaimed(self):
      # completed work considered claimed
      self.assertFalse(work_data.is_unclaimed(self.work1))
      # not completed, not claimed work
      self.assertTrue(work_data.is_unclaimed(self.work2))
      # claimed but not completed work
      self.work2["claimed_worker_id"] = "some_worker"
      self.work2[
          "claimed_worker_start_time"
      ] = work_data.get_integer_time()
      self.assertFalse(work_data.is_unclaimed(self.work2))
      # work claimed too long ago considered unclaimed now
      self.work2["claimed_worker_start_time"] = (
          work_data.get_integer_time()
          - work_data.MAX_PROCESSING_TIME
          - 1
      )
      self.assertTrue(work_data.is_unclaimed(self.work2))
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import copy
  import unittest
  from six import assertCountEqual
  from six import itervalues
  from eval_lib import work_data
  from eval_lib.tests import fake_cloud_client
label_desc: Use image node_id 3 for calling the WorkPiecesBaseTest obj's underlying member method code with example usage: obj.test_is_unclaimed() without return types