org.mockito.internal.util.collections.Sets#newSet ( )源码实例Demo

下面列出了org.mockito.internal.util.collections.Sets#newSet ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Test(groups = "unit")
public void resolveGlobalSessionTokenReturnsTokenMapUsingName() {
    SessionContainer sessionContainer = new SessionContainer("127.0.0.1");
    String documentCollectionId = ResourceId.newDocumentCollectionId(getRandomDbId(), getRandomCollectionId()).getDocumentCollectionId().toString();
    String collectionFullName = "dbs/db1/colls1/collName";

    sessionContainer.setSessionToken(documentCollectionId, collectionFullName,
            ImmutableMap.of(HttpConstants.HttpHeaders.SESSION_TOKEN, "range_0:1#100#1=20#2=5#3=30"));
    sessionContainer.setSessionToken(documentCollectionId, collectionFullName,
            ImmutableMap.of(HttpConstants.HttpHeaders.SESSION_TOKEN, "range_1:1#101#1=20#2=5#3=30"));

    RxDocumentServiceRequest request = RxDocumentServiceRequest.createFromName(OperationType.Read,
            collectionFullName + "/docs/doc1", ResourceType.Document);
    String sessionToken = sessionContainer.resolveGlobalSessionToken(request);
    Set<String> tokens = Sets.newSet(sessionToken.split(","));

    assertThat(tokens.size()).isEqualTo(2);
    assertThat(tokens.contains("range_0:1#100#1=20#2=5#3=30")).isTrue();
    assertThat(tokens.contains("range_1:1#101#1=20#2=5#3=30")).isTrue();
}
 
@Test(groups = "unit")
public void resolveGlobalSessionTokenReturnsTokenMapUsingResourceId() {
    SessionContainer sessionContainer = new SessionContainer("127.0.0.1");
    String documentCollectionId = ResourceId.newDocumentCollectionId(getRandomDbId(), getRandomCollectionId()).getDocumentCollectionId().toString();
    String collectionFullName = "dbs/db1/colls1/collName";
    RxDocumentServiceRequest request = RxDocumentServiceRequest.create(OperationType.Read,
            documentCollectionId, ResourceType.Document, new HashMap<>());

    sessionContainer.setSessionToken(documentCollectionId, collectionFullName,
            ImmutableMap.of(HttpConstants.HttpHeaders.SESSION_TOKEN, "range_0:1#100#1=20#2=5#3=30"));
    sessionContainer.setSessionToken(documentCollectionId, collectionFullName,
            ImmutableMap.of(HttpConstants.HttpHeaders.SESSION_TOKEN, "range_1:1#101#1=20#2=5#3=30"));
    String sessionToken = sessionContainer.resolveGlobalSessionToken(request);

    Set<String> tokens = Sets.newSet(sessionToken.split(","));
    assertThat(tokens.size()).isEqualTo(2);
    assertThat(tokens.contains("range_0:1#100#1=20#2=5#3=30")).isTrue();
    assertThat(tokens.contains("range_1:1#101#1=20#2=5#3=30")).isTrue();
}
 
源代码3 项目: Cheddar   文件: InMemoryDatabaseTemplateTest.java
@Test
public void shouldUpdate_withSingleItemWithCompoundPk() {
    // Given
    final InMemoryDatabaseTemplate databaseTemplate = new InMemoryDatabaseTemplate(databaseSchemaHolder);
    final StubWithRangeItem createdItem = dataGenerator.randomStubWithRangeItem();
    databaseTemplate.create(createdItem);
    final Long originalVersion = createdItem.getVersion();
    final String stringProperty = randomString(10);
    final boolean booleanProperty = randomBoolean();
    final Set<String> newStringSetProperty = Sets.newSet(randomString(10), randomString(10), randomString(10));
    createdItem.setStringProperty(stringProperty);
    createdItem.setBooleanProperty(booleanProperty);
    createdItem.setStringSetProperty(newStringSetProperty);
    final Long newVersion = originalVersion + 1;

    // When
    final StubWithRangeItem updatedItem = databaseTemplate.update(createdItem);

    // Then
    assertEquals(newVersion, updatedItem.getVersion());
    assertEquals(createdItem.getId(), updatedItem.getId());
    assertEquals(stringProperty, updatedItem.getStringProperty());
    assertEquals(booleanProperty, updatedItem.isBooleanProperty());
    assertEquals(newStringSetProperty, updatedItem.getStringSetProperty());
}
 
源代码4 项目: sakai   文件: ItemHashUtilTest.java
@Test
public void testHashBaseForItemAnswersPreservesNullsLiterally()
        throws IOException, NoSuchAlgorithmException, ServerOverloadException {
    final ItemData item = new ItemData();
    item.setTypeId(TypeIfc.FILL_IN_BLANK);

    // sequence, at least, is required, else ordering is completely non-deterministic
    final Pair<Answer,String> answer1 = answerAndExpectedHashBaseFor(item, 1L, null, null, null, null, null, null);
    final Pair<Answer,String> answer2 = answerAndExpectedHashBaseFor(item, 2L, null, null, null, null, null, null);

    final ItemText itemText1 = new ItemText(item, 1L, null, Sets.newSet(answerFrom(answer1), answerFrom(answer2)));
    answerFrom(answer1).setItemText(itemText1);
    answerFrom(answer2).setItemText(itemText1);

    item.setItemTextSet(Sets.newSet(itemText1));

    final StringBuilder expectedHashBase = new StringBuilder()
            .append(stringFrom(answer1))
            .append(stringFrom(answer2));

    final StringBuilder actualHashBase = new StringBuilder();
    itemHashUtil.hashBaseForItemAnswers(item, actualHashBase);
    assertThat(actualHashBase.toString(), equalTo(expectedHashBase.toString()));
}
 
源代码5 项目: cron-utils   文件: Issue340Test.java
@Test
public void testDayOfWeekRollover() {
    // Every Friday to Tuesday (Fri, Sat, Sun, Mon, Tue) at 5 AM
    String schedule = "0 0 5 ? * FRI-TUE *";
    // Java DayOfWeek is MON (1) to SUN (7)
    Set<Integer> validDaysOfWeek = Sets.newSet(1, 2, 5, 6, 7);
    CronDefinition cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(QUARTZ);
    CronParser parser = new CronParser(cronDefinition);
    Cron quartzCron = parser.parse(schedule);

    ZonedDateTime time = ZonedDateTime.now();
    ExecutionTime executionTime = ExecutionTime.forCron(quartzCron);

    // Check the next 100 execution times
    for (int i = 0; i < 100; i++) {
        Optional<ZonedDateTime> nextExecution = executionTime.nextExecution(time);
        Assert.assertTrue(nextExecution.isPresent());
        time = nextExecution.get();
        int dayOfWeek = time.getDayOfWeek().getValue();
        Assert.assertTrue(validDaysOfWeek.contains(dayOfWeek));
        Assert.assertEquals(5, time.getHour());
        Assert.assertEquals(0, time.getMinute());
        Assert.assertEquals(0, time.getSecond());
    }
}
 
源代码6 项目: sakai   文件: ItemHashUtilTest.java
@Test
public void testHashBaseForItemAnswersPreservesNullsLiterally()
        throws IOException, NoSuchAlgorithmException, ServerOverloadException {
    final ItemData item = new ItemData();
    item.setTypeId(TypeIfc.FILL_IN_BLANK);

    // sequence, at least, is required, else ordering is completely non-deterministic
    final Pair<Answer,String> answer1 = answerAndExpectedHashBaseFor(item, 1L, null, null, null, null, null, null);
    final Pair<Answer,String> answer2 = answerAndExpectedHashBaseFor(item, 2L, null, null, null, null, null, null);

    final ItemText itemText1 = new ItemText(item, 1L, null, Sets.newSet(answerFrom(answer1), answerFrom(answer2)));
    answerFrom(answer1).setItemText(itemText1);
    answerFrom(answer2).setItemText(itemText1);

    item.setItemTextSet(Sets.newSet(itemText1));

    final StringBuilder expectedHashBase = new StringBuilder()
            .append(stringFrom(answer1))
            .append(stringFrom(answer2));

    final StringBuilder actualHashBase = new StringBuilder();
    itemHashUtil.hashBaseForItemAnswers(item, actualHashBase);
    assertThat(actualHashBase.toString(), equalTo(expectedHashBase.toString()));
}
 
源代码7 项目: Cheddar   文件: ConditionTest.java
@Test
public void shouldReturnHasMissingComparisonValues_withConditionWhichRequiresComparisonValuesAndNullOrEmptyValues() {
    // Given
    final Set<Operators> operatorsWhichRequireNonNullOrEmptyValues = Sets.newSet(Operators.EQUALS,
            Operators.GREATER_THAN_OR_EQUALS, Operators.LESS_THAN_OR_EQUALS);
    final Operators operatorWhichRequiresNonNullOrEmptyValue = randomEnumInSet(
            operatorsWhichRequireNonNullOrEmptyValues);
    final String value = randomBoolean() ? null : "";

    final Condition condition = new Condition(operatorWhichRequiresNonNullOrEmptyValue, value);

    // When
    final boolean hasMissingComparisonValues = condition.hasMissingComparisonValues();

    // Then
    assertTrue(hasMissingComparisonValues);
}
 
源代码8 项目: Cheddar   文件: ConditionTest.java
@Test
public void shouldReturnDoesNotHaveMissingComparisonValues_withConditionWhichRequiresComparisonValuesAndNonNullOrEmptyValues() {
    // Given
    final Set<Operators> operatorsWhichRequireNonNullOrEmptyValues = Sets.newSet(Operators.EQUALS,
            Operators.GREATER_THAN_OR_EQUALS, Operators.LESS_THAN_OR_EQUALS);
    final Operators operatorWhichRequiresNonNullOrEmptyValue = randomEnumInSet(
            operatorsWhichRequireNonNullOrEmptyValues);
    final String value = randomString(10);

    final Condition condition = new Condition(operatorWhichRequiresNonNullOrEmptyValue, value);

    // When
    final boolean hasMissingComparisonValues = condition.hasMissingComparisonValues();

    // Then
    assertFalse(hasMissingComparisonValues);
}
 
源代码9 项目: Cheddar   文件: ConditionTest.java
@Test
public void shouldReturnDoesNotHaveMissingComparisonValues_withConditionWhichDoesNotRequireComparisonValuesAndNonNullOrEmptyValues() {
    // Given
    final Set<Operators> operatorsWhichDoNotRequireNonNullOrEmptyValues = Sets.newSet(Operators.NOT_NULL,
            Operators.NULL);
    final Operators operatorWhichRequiresNonNullOrEmptyValue = randomEnumInSet(
            operatorsWhichDoNotRequireNonNullOrEmptyValues);
    final String value = randomString();

    final Condition condition = new Condition(operatorWhichRequiresNonNullOrEmptyValue, value);

    // When
    final boolean hasMissingComparisonValues = condition.hasMissingComparisonValues();

    // Then
    assertFalse(hasMissingComparisonValues);
}
 
源代码10 项目: Cheddar   文件: DynamoDbTemplateIntegrationTest.java
@Test
public void shouldUpdate_withSingleItem() {
    // Given
    final DynamoDbTemplate dynamoDbTemplate = new DynamoDbTemplate(databaseSchemaHolder);
    dynamoDbTemplate.initialize(amazonDynamoDbClient);
    final StubItem createdItem = dataGenerator.createStubItem();
    final Long originalVersion = createdItem.getVersion();
    final String stringProperty = randomString(10);
    final String stringProperty2 = randomString(10);
    final Set<String> newStringSetProperty = Sets.newSet(randomString(10), randomString(10), randomString(10));
    createdItem.setStringProperty(stringProperty);
    createdItem.setStringProperty2(stringProperty2);
    createdItem.setStringSetProperty(newStringSetProperty);
    final Long newVersion = originalVersion + 1;

    // When
    final StubItem updatedItem = dynamoDbTemplate.update(createdItem);

    // Then
    assertEquals(newVersion, updatedItem.getVersion());
    assertEquals(createdItem.getId(), updatedItem.getId());
    assertEquals(stringProperty, updatedItem.getStringProperty());
    assertEquals(stringProperty2, updatedItem.getStringProperty2());
    assertEquals(newStringSetProperty, updatedItem.getStringSetProperty());
}
 
源代码11 项目: journalkeeper   文件: JournalStoreTest.java
@Ignore
@Test
public void writePerformanceTest() throws Exception {
    Set<Integer> partitions = Sets.newSet(0, 1, 2, 3, 4);
    Properties properties = new Properties();
    properties.setProperty("cache_requests", String.valueOf(10L * 1024));
    properties.setProperty("enable_events", String.valueOf(false));
    properties.setProperty("print_state_interval_sec", String.valueOf(5));
    properties.setProperty("enable_metric", String.valueOf(true));
    properties.setProperty("print_metric_interval_sec", String.valueOf(5));
    properties.setProperty("replication_batch_size", String.valueOf( 1024));

    writeReadTest(2, partitions,1024, 10, 2L * 1024 * 1024 * 1024, true, ResponseConfig.RECEIVE, false, properties);
}
 
源代码12 项目: Cheddar   文件: DynamoDbTemplateIntegrationTest.java
@Test
public void shouldUpdate_viaBatchWrite_withSingleItem() {
    // Given
    final DynamoDbTemplate dynamoDbTemplate = new DynamoDbTemplate(databaseSchemaHolder);
    dynamoDbTemplate.initialize(amazonDynamoDbClient);
    final StubItem createdItem = dataGenerator.createStubItem();
    final Long originalVersion = createdItem.getVersion();
    final String stringProperty = randomString(10);
    final String stringProperty2 = randomString(10);
    final Set<String> newStringSetProperty = Sets.newSet(randomString(10), randomString(10), randomString(10));
    createdItem.setStringProperty(stringProperty);
    createdItem.setStringProperty2(stringProperty2);
    createdItem.setStringSetProperty(newStringSetProperty);
    final Long newVersion = originalVersion + 1;

    final List<StubItem> stubItems = new ArrayList<>();
    stubItems.add(createdItem);

    // When
    final List<StubItem> successfulStubItems = dynamoDbTemplate.batchWrite(stubItems, StubItem.class);

    // Then
    for (final StubItem aStubItem : successfulStubItems) {
        assertEquals(newVersion, aStubItem.getVersion());
        assertEquals(createdItem.getId(), aStubItem.getId());
        assertEquals(stringProperty, aStubItem.getStringProperty());
        assertEquals(stringProperty2, aStubItem.getStringProperty2());
        assertEquals(newStringSetProperty, aStubItem.getStringSetProperty());
    }
}
 
源代码13 项目: sakai   文件: ItemHashUtilTest.java
@Test
public void testHashBaseForItemAnswersNormalizesEmbeddedResourceUrls()
        throws NoSuchAlgorithmException, IOException, ServerOverloadException, IdUnusedException, TypeException,
        PermissionException {

    final ItemData item = new ItemData();
    item.setTypeId(TypeIfc.FILL_IN_BLANK);

    final Pair<Answer,String> answer1 = answerAndExpectedHashBaseFor(item, 1L, true, "Label 1", CONTENT_RESOURCES[0], CONTENT_RESOURCES[1], CONTENT_RESOURCES[2], CONTENT_RESOURCES[3]);
    final Pair<Answer,String> answer2 = answerAndExpectedHashBaseFor(item, 2L, false, "Label 2", CONTENT_RESOURCES[4], CONTENT_RESOURCES[5], CONTENT_RESOURCES[6], CONTENT_RESOURCES[7]);
    final Pair<Answer,String> answer3 = answerAndExpectedHashBaseFor(item, 3L, true, "Label 3", CONTENT_RESOURCES[8], CONTENT_RESOURCES[9], CONTENT_RESOURCES[10], CONTENT_RESOURCES[11]);
    final Pair<Answer,String> answer4 = answerAndExpectedHashBaseFor(item, 4L, false, "Label 4", CONTENT_RESOURCES[12], CONTENT_RESOURCES[13], CONTENT_RESOURCES[14], CONTENT_RESOURCES[15]);

    final ItemText itemText1 = new ItemText(item, 1L, null, Sets.newSet(answerFrom(answer1), answerFrom(answer2)));
    answerFrom(answer1).setItemText(itemText1);
    answerFrom(answer2).setItemText(itemText1);

    final ItemText itemText2 = new ItemText(item, 2L, null, Sets.newSet(answerFrom(answer3), answerFrom(answer4)));
    answerFrom(answer3).setItemText(itemText2);
    answerFrom(answer4).setItemText(itemText2);

    item.setItemTextSet(Sets.newSet(itemText1, itemText2));

    final StringBuilder expectedHashBase = new StringBuilder()
            .append(stringFrom(answer1))
            .append(stringFrom(answer2))
            .append(stringFrom(answer3))
            .append(stringFrom(answer4));

    expectServerUrlLookup();
    IntStream.rangeClosed(0, 15).forEach(
            i -> expectResourceLookupUnchecked(CONTENT_RESOURCES[i])
    );

    final StringBuilder actualHashBase = new StringBuilder();
    itemHashUtil.hashBaseForItemAnswers(item, actualHashBase);
    assertThat(actualHashBase.toString(), equalTo(expectedHashBase.toString()));
}
 
源代码14 项目: pravega   文件: SerializationTest.java
@Test
public void hostContainerMapTest() {
    Host host = new Host("1.1.1.1", 1234, "ep");
    Host host2 = new Host("1.1.1.2", 1234, "ep");
    ContainerSet set = new ContainerSet(Sets.newSet(1, 2, 3, 4));
    ContainerSet set2 = new ContainerSet(Sets.newSet(1, 2, 3, 4));
    Map<Host, ContainerSet> map = new HashMap<>();
    map.put(host, set);
    map.put(host2, set2);
    HostContainerMap hostContainerMap = new HostContainerMap(map);
    byte[] serialized = hostContainerMap.toBytes();
    HostContainerMap deserialized = HostContainerMap.fromBytes(serialized);
    assertTrue(Maps.difference(hostContainerMap.getHostContainerMap(), deserialized.getHostContainerMap()).areEqual());
}
 
源代码15 项目: Cheddar   文件: DynamoDbTemplateTest.java
@Test
public void shouldRead_withItemIdAndItemClass() throws Exception {
    // Given
    final ItemId itemId = new ItemId(randomId());

    final ItemConfiguration itemConfiguration = new ItemConfiguration(StubItem.class, tableName);
    final Collection<ItemConfiguration> itemConfigurations = Arrays.asList(itemConfiguration);
    when(mockDatabaseSchemaHolder.itemConfigurations()).thenReturn(itemConfigurations);
    final GetItemResult mockGetItemResult = mock(GetItemResult.class);
    final String stringProperty = randomString(10);
    final String stringProperty2 = randomString(10);
    final Set<String> stringSetProperty = Sets.newSet(randomString(10), randomString(10), randomString(10));
    final Map<String, AttributeValue> itemAttributeMap = new HashMap<>();
    itemAttributeMap.put("id", new AttributeValue(itemId.value()));
    itemAttributeMap.put("stringProperty", new AttributeValue(stringProperty));
    itemAttributeMap.put("stringProperty2", new AttributeValue(stringProperty2));
    itemAttributeMap.put("stringSetProperty", new AttributeValue().withSS(stringSetProperty));
    when(mockGetItemResult.getItem()).thenReturn(itemAttributeMap);
    when(mockAmazonDynamoDbClient.getItem(any(GetItemRequest.class))).thenReturn(mockGetItemResult);

    final DynamoDbTemplate dynamoDbTemplate = new DynamoDbTemplate(mockDatabaseSchemaHolder);
    dynamoDbTemplate.initialize(mockAmazonDynamoDbClient);

    // When
    final StubItem returnedItem = dynamoDbTemplate.read(itemId, StubItem.class);

    // Then
    final ArgumentCaptor<GetItemRequest> getItemRequestCaptor = ArgumentCaptor.forClass(GetItemRequest.class);
    verify(mockAmazonDynamoDbClient).getItem(getItemRequestCaptor.capture());
    assertEquals(itemId.value(), getItemRequestCaptor.getValue().getKey().get("id").getS());
    assertEquals(itemId.value(), returnedItem.getId());
    assertEquals(stringProperty, returnedItem.getStringProperty());
    assertEquals(stringProperty2, returnedItem.getStringProperty2());
    assertEquals(stringSetProperty, returnedItem.getStringSetProperty());
}
 
源代码16 项目: sakai   文件: ItemHashUtilTest.java
@Test
public void testHashBaseForItemAnswersNormalizesEmbeddedResourceUrls()
        throws NoSuchAlgorithmException, IOException, ServerOverloadException, IdUnusedException, TypeException,
        PermissionException {

    final ItemData item = new ItemData();
    item.setTypeId(TypeIfc.FILL_IN_BLANK);

    final Pair<Answer,String> answer1 = answerAndExpectedHashBaseFor(item, 1L, true, "Label 1", CONTENT_RESOURCES[0], CONTENT_RESOURCES[1], CONTENT_RESOURCES[2], CONTENT_RESOURCES[3]);
    final Pair<Answer,String> answer2 = answerAndExpectedHashBaseFor(item, 2L, false, "Label 2", CONTENT_RESOURCES[4], CONTENT_RESOURCES[5], CONTENT_RESOURCES[6], CONTENT_RESOURCES[7]);
    final Pair<Answer,String> answer3 = answerAndExpectedHashBaseFor(item, 3L, true, "Label 3", CONTENT_RESOURCES[8], CONTENT_RESOURCES[9], CONTENT_RESOURCES[10], CONTENT_RESOURCES[11]);
    final Pair<Answer,String> answer4 = answerAndExpectedHashBaseFor(item, 4L, false, "Label 4", CONTENT_RESOURCES[12], CONTENT_RESOURCES[13], CONTENT_RESOURCES[14], CONTENT_RESOURCES[15]);

    final ItemText itemText1 = new ItemText(item, 1L, null, Sets.newSet(answerFrom(answer1), answerFrom(answer2)));
    answerFrom(answer1).setItemText(itemText1);
    answerFrom(answer2).setItemText(itemText1);

    final ItemText itemText2 = new ItemText(item, 2L, null, Sets.newSet(answerFrom(answer3), answerFrom(answer4)));
    answerFrom(answer3).setItemText(itemText2);
    answerFrom(answer4).setItemText(itemText2);

    item.setItemTextSet(Sets.newSet(itemText1, itemText2));

    final StringBuilder expectedHashBase = new StringBuilder()
            .append(stringFrom(answer1))
            .append(stringFrom(answer2))
            .append(stringFrom(answer3))
            .append(stringFrom(answer4));

    expectServerUrlLookup();
    IntStream.rangeClosed(0, 15).forEach(
            i -> expectResourceLookupUnchecked(CONTENT_RESOURCES[i])
    );

    final StringBuilder actualHashBase = new StringBuilder();
    itemHashUtil.hashBaseForItemAnswers(item, actualHashBase);
    assertThat(actualHashBase.toString(), equalTo(expectedHashBase.toString()));
}
 
源代码17 项目: Cheddar   文件: ConditionTest.java
@Test
public void shouldCreateCondition_withComparisonOperatorAndValueSet() throws Exception {
    // Given
    final Operators randomComparisonOperator = randomEnum(Operators.class);
    final Set<String> values = Sets.newSet(randomString(10), randomString(10), randomString(10));

    // When
    final Condition condition = new Condition(randomComparisonOperator, values);

    // Then
    assertNotNull(condition);
    assertEquals(randomComparisonOperator, condition.getComparisonOperator());
    assertEquals(values.size(), condition.getValues().size());
}
 
源代码18 项目: pravega   文件: SerializationTest.java
@Test
public void containersetTest() throws IOException {
    ContainerSet set = new ContainerSet(Sets.newSet(1, 2, 3, 4));
    byte[] serialized = ContainerSet.SERIALIZER.serialize(set).getCopy();
    assertEquals(set.getContainerSet(), ContainerSet.SERIALIZER.deserialize(serialized).getContainerSet());
}
 
源代码19 项目: Cheddar   文件: StubFeatureService.java
@Override
public Set<String> featureSetIds() {
    return Sets.newSet("FEATURE_SET_1", "FEATURE_SET_2", "FEATURE_SET_3");
}
 
源代码20 项目: sakai   文件: ItemHashUtilTest.java
@Test
public void testHashItemGeneratesSha256OfHashBase() throws IOException, NoSuchAlgorithmException, ServerOverloadException {

    final ItemData item = new ItemData();
    item.setTypeId(TypeIfc.FILL_IN_BLANK);

    item.setInstruction(resourceDocTemplate1(fullUrlForContentResource(CONTENT_RESOURCES[0])));
    item.setCorrectItemFeedback(resourceDocTemplate1(fullUrlForContentResource(CONTENT_RESOURCES[1])));
    item.setInCorrectItemFeedback(resourceDocTemplate1(fullUrlForContentResource(CONTENT_RESOURCES[2])));
    item.setGeneralItemFeedback(resourceDocTemplate1(fullUrlForContentResource(CONTENT_RESOURCES[3])));
    item.setDescription(resourceDocTemplate1(fullUrlForContentResource(CONTENT_RESOURCES[4])));

    // just the "first two" metadata fields should be sufficient to prove metadata is being included
    final ItemMetaDataIfc metaData1 = newItemMetaData(item, ItemMetaDataIfc.RANDOMIZE, 11);
    final ItemMetaDataIfc metaData2 = newItemMetaData(item, ItemMetaDataIfc.REQUIRE_ALL_OK, 12);
    item.setItemMetaDataSet(Sets.newSet(metaData1,metaData2));

    final ItemAttachment attachment = new ItemAttachment(1L, item, idForContentResource(CONTENT_RESOURCES[5]), CONTENT_RESOURCES[5][CR_NAME_IDX], null, Long.MAX_VALUE - 1, null, null, null, null, null, null, null, null);
    item.setItemAttachmentSet(Sets.newSet(attachment));

    final Pair<Answer,String> answer = answerAndExpectedHashBaseFor(item, 1L, true, "Label 1", CONTENT_RESOURCES[6], CONTENT_RESOURCES[7], CONTENT_RESOURCES[8], CONTENT_RESOURCES[9]);
    final ItemText itemText = new ItemText(item, 1L, resourceDocTemplate1(fullUrlForContentResource(CONTENT_RESOURCES[10])), Sets.newSet(answerFrom(answer)));
    answerFrom(answer).setItemText(itemText);
    item.setItemTextSet(Sets.newSet(itemText));

    final ItemTag itemTag = new ItemTag(item, "tag1", "taglabel1", "tagcollection1", "tagcollectionname1");
    item.setItemTagSet(Sets.newSet(itemTag));

    expectServerUrlLookup();
    IntStream.rangeClosed(0, 12).forEach(
            i -> expectResourceLookupUnchecked(CONTENT_RESOURCES[i])
    );

    final StringBuilder expectedHashBase = new StringBuilder(labeled("TypeId","" + TypeIfc.FILL_IN_BLANK))
            .append(labeled("ItemText",renderBlanks(resourceDocTemplate1(expectedContentResourceHash1(CONTENT_RESOURCES[10])))))
            .append(labeled("Instruction",resourceDocTemplate1(expectedContentResourceHash1(CONTENT_RESOURCES[0]))))
            .append(labeled("CorrectItemFeedback",resourceDocTemplate1(expectedContentResourceHash1(CONTENT_RESOURCES[1]))))
            .append(labeled("IncorrectItemFeedback",resourceDocTemplate1(expectedContentResourceHash1(CONTENT_RESOURCES[2]))))
            .append(labeled("GeneralCorrectItemFeedback",resourceDocTemplate1(expectedContentResourceHash1(CONTENT_RESOURCES[3]))))
            .append(labeled("Description",resourceDocTemplate1(expectedContentResourceHash1(CONTENT_RESOURCES[4]))))
            .append(expectedContentResourceHash1(CONTENT_RESOURCES[5]))
            .append(stringFrom(answer))
            .append(labeled("RANDOMIZE",resourceDocTemplate1(fullUrlForContentResource(CONTENT_RESOURCES[11])))) // this specific MD field not actually treated as resource doc
            .append(labeled("REQUIRE_ALL_OK",resourceDocTemplate1(fullUrlForContentResource(CONTENT_RESOURCES[12])))); // this specific MD field not actually treated as resource doc

    // nulls for the other 14 "important" metadata keys
    //IntStream.rangeClosed(0, 13).forEach(
    //        i -> expectedHashBase.append("null")
    //);

    // convenient for debugging where the hash goes off the rails by looking at where the underlying "base" string goes off the rails...
    assertThat(itemHashUtil.hashBaseForItem(item).toString(), equalTo(expectedHashBase.toString()));

    final String expectedHash = sha256(bytes(expectedHashBase.toString()));
    final String actualHash1 = itemHashUtil.hashItem(item);
    final String actualHash2 = itemHashUtil.hashItem(item);
    assertThat(actualHash1, equalTo(expectedHash));
    assertThat("Hash is not stable", actualHash2, equalTo(expectedHash)); // believe it or not, this failed at one point (test bug w/r/t stream mgmt)
}
 
 同类方法