ComponentKitTests/CKRenderComponentTests.mm [255:281]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  __block CKCompositeComponentWithScopeAndState *root;
  __block CKTestRenderComponent *c;
  auto const componentIdentifier = 1;
  auto const componentFactory = ^{
    c = [CKTestRenderComponent newWithProps:{.identifier = componentIdentifier}];
    root = [CKCompositeComponentWithScopeAndState newWithComponent:c];
    return root;
  };
  auto const scopeRoot = CKComponentScopeRootWithDefaultPredicates(nil, nil);
  auto const buildTrigger = CKBuildComponentTrigger(scopeRoot, {}, NO, NO);
  auto const buildResults = CKBuildComponent(scopeRoot, {}, componentFactory, buildTrigger, CKReflowTriggerNone);

  // Simulate a state update on a parent component:
  // 1. parentHasStateUpdate = YES
  // 2. treeNodeDirtyIds with a fake parent id.
  CKComponentStateUpdateMap stateUpdates;
  stateUpdates[root.treeNode.scopeHandle].push_back(^(id){
    return @2;
  });

  __block CKCompositeComponentWithScopeAndState *root2;
  __block CKTestRenderComponent *c2;
  auto const componentFactory2 = ^{
    c2 = [CKTestRenderComponent newWithProps:{.identifier = componentIdentifier}];
    root2 = [CKCompositeComponentWithScopeAndState newWithComponent:c2];
    return root2;
  };
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



ComponentKitTests/CKRenderComponentTests.mm [354:382]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  __block CKCompositeComponentWithScopeAndState *root;
  __block CKTestRenderComponent *c;
  auto const componentIdentifier = 1;
  auto const componentFactory = ^{
    c = [CKTestRenderComponent newWithProps:{.identifier = componentIdentifier}];
    root = [CKCompositeComponentWithScopeAndState newWithComponent:c];
    return root;
  };
  auto const scopeRoot = CKComponentScopeRootWithDefaultPredicates(nil, nil);
  auto const buildTrigger = CKBuildComponentTrigger(scopeRoot, {}, NO, NO);
  auto const buildResults = CKBuildComponent(scopeRoot, {}, componentFactory, buildTrigger, CKReflowTriggerNone);

  // Simulate props and a state update on a component
  // 1. parentHasStateUpdate = YES
  // 2. treeNodeDirtyIds with a fake parent id.
  // 3. forcePropsUpdates = YES
  // 4. Props (componentIdentifier) are equal = reuse
  CKComponentStateUpdateMap stateUpdates;
  stateUpdates[root.treeNode.scopeHandle].push_back(^(id){
    return @2;
  });

  __block CKCompositeComponentWithScopeAndState *root2;
  __block CKTestRenderComponent *c2;
  auto const componentFactory2 = ^{
    c2 = [CKTestRenderComponent newWithProps:{.identifier = componentIdentifier}];
    root2 = [CKCompositeComponentWithScopeAndState newWithComponent:c2];
    return root2;
  };
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



