Merge pull request #160 from dwango/feature/add_required_to_license_field_in_json_schema

Now some fields in meta are required
This commit is contained in:
yutopp 2019-02-01 19:13:23 +09:00 committed by GitHub
commit 0b0e511100
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 232 additions and 8 deletions

View File

@ -237,10 +237,17 @@ namespace VRM
[Test]
public void MetaTest()
{
var model = new glTF_VRM_Meta();
var model = new glTF_VRM_Meta()
{
allowedUserName = "OnlyAuthor",
violentUssageName = "Disallow",
sexualUssageName = "Disallow",
commercialUssageName = "Disallow",
licenseName = "CC0",
};
var json = model.ToJson();
Assert.AreEqual(@"{""texture"":-1}", json);
Assert.AreEqual(@"{""texture"":-1,""allowedUserName"":""OnlyAuthor"",""violentUssageName"":""Disallow"",""sexualUssageName"":""Disallow"",""commercialUssageName"":""Disallow"",""licenseName"":""CC0""}", json);
Debug.Log(json);
var c = new JsonSchemaValidationContext("")
@ -249,7 +256,224 @@ namespace VRM
};
var json2 = JsonSchema.FromType<glTF_VRM_Meta>().Serialize(model, c);
// NOTE: New serializer outputs values which will not be used...
Assert.AreEqual(@"{}",json2);
Assert.AreEqual(@"{""allowedUserName"":""OnlyAuthor"",""violentUssageName"":""Disallow"",""sexualUssageName"":""Disallow"",""commercialUssageName"":""Disallow"",""licenseName"":""CC0""}",json2);
}
[Test]
public void MetaTestError()
{
{
var model = new glTF_VRM_Meta();
var c = new JsonSchemaValidationContext("")
{
EnableDiagnosisForNotRequiredFields = true,
};
var ex = Assert.Throws<JsonSchemaValidationException>(
() => JsonSchema.FromType<glTF_VRM_Meta>().Serialize(model, c)
);
Assert.AreEqual("[allowedUserName.String] null", ex.Message);
}
{
var model = new glTF_VRM_Meta()
{
allowedUserName = "OnlyAuthor",
violentUssageName = "Disallow",
sexualUssageName = "Disallow",
commercialUssageName = "Disallow",
//licenseName = "CC0",
};
var c = new JsonSchemaValidationContext("")
{
EnableDiagnosisForNotRequiredFields = true,
};
var ex = Assert.Throws<JsonSchemaValidationException>(
() => JsonSchema.FromType<glTF_VRM_Meta>().Serialize(model, c)
);
Assert.AreEqual("[licenseName.String] null", ex.Message);
}
{
var model = new glTF_VRM_Meta()
{
allowedUserName = "OnlyAuthor",
violentUssageName = "Disallow",
sexualUssageName = "Disallow",
commercialUssageName = "Disallow",
licenseName = "_INVALID_SOME_THING_",
};
var c = new JsonSchemaValidationContext("")
{
EnableDiagnosisForNotRequiredFields = true,
};
var ex = Assert.Throws<JsonSchemaValidationException>(
() => JsonSchema.FromType<glTF_VRM_Meta>().Serialize(model, c)
);
Assert.AreEqual("[licenseName.String] _INVALID_SOME_THING_ is not valid enum", ex.Message);
}
{
var model = new glTF_VRM_Meta()
{
// allowedUserName = "OnlyAuthor",
violentUssageName = "Disallow",
sexualUssageName = "Disallow",
commercialUssageName = "Disallow",
licenseName = "CC0",
};
var c = new JsonSchemaValidationContext("")
{
EnableDiagnosisForNotRequiredFields = true,
};
var ex = Assert.Throws<JsonSchemaValidationException>(
() => JsonSchema.FromType<glTF_VRM_Meta>().Serialize(model, c)
);
Assert.AreEqual("[allowedUserName.String] null", ex.Message);
}
{
var model = new glTF_VRM_Meta()
{
allowedUserName = "_INVALID_SOME_THING_",
violentUssageName = "Disallow",
sexualUssageName = "Disallow",
commercialUssageName = "Disallow",
licenseName = "CC0",
};
var c = new JsonSchemaValidationContext("")
{
EnableDiagnosisForNotRequiredFields = true,
};
var ex = Assert.Throws<JsonSchemaValidationException>(
() => JsonSchema.FromType<glTF_VRM_Meta>().Serialize(model, c)
);
Assert.AreEqual("[allowedUserName.String] _INVALID_SOME_THING_ is not valid enum", ex.Message);
}
{
var model = new glTF_VRM_Meta()
{
allowedUserName = "OnlyAuthor",
//violentUssageName = "Disallow",
sexualUssageName = "Disallow",
commercialUssageName = "Disallow",
licenseName = "CC0",
};
var c = new JsonSchemaValidationContext("")
{
EnableDiagnosisForNotRequiredFields = true,
};
var ex = Assert.Throws<JsonSchemaValidationException>(
() => JsonSchema.FromType<glTF_VRM_Meta>().Serialize(model, c)
);
Assert.AreEqual("[violentUssageName.String] null", ex.Message);
}
{
var model = new glTF_VRM_Meta()
{
allowedUserName = "OnlyAuthor",
violentUssageName = "_INVALID_SOME_THING_",
sexualUssageName = "Disallow",
commercialUssageName = "Disallow",
licenseName = "CC0",
};
var c = new JsonSchemaValidationContext("")
{
EnableDiagnosisForNotRequiredFields = true,
};
var ex = Assert.Throws<JsonSchemaValidationException>(
() => JsonSchema.FromType<glTF_VRM_Meta>().Serialize(model, c)
);
Assert.AreEqual("[violentUssageName.String] _INVALID_SOME_THING_ is not valid enum", ex.Message);
}
{
var model = new glTF_VRM_Meta()
{
allowedUserName = "OnlyAuthor",
violentUssageName = "Disallow",
//sexualUssageName = "Disallow",
commercialUssageName = "Disallow",
licenseName = "CC0",
};
var c = new JsonSchemaValidationContext("")
{
EnableDiagnosisForNotRequiredFields = true,
};
var ex = Assert.Throws<JsonSchemaValidationException>(
() => JsonSchema.FromType<glTF_VRM_Meta>().Serialize(model, c)
);
Assert.AreEqual("[sexualUssageName.String] null", ex.Message);
}
{
var model = new glTF_VRM_Meta()
{
allowedUserName = "OnlyAuthor",
violentUssageName = "Disallow",
sexualUssageName = "_INVALID_SOME_THING_",
commercialUssageName = "Disallow",
licenseName = "CC0",
};
var c = new JsonSchemaValidationContext("")
{
EnableDiagnosisForNotRequiredFields = true,
};
var ex = Assert.Throws<JsonSchemaValidationException>(
() => JsonSchema.FromType<glTF_VRM_Meta>().Serialize(model, c)
);
Assert.AreEqual("[sexualUssageName.String] _INVALID_SOME_THING_ is not valid enum", ex.Message);
}
{
var model = new glTF_VRM_Meta()
{
allowedUserName = "OnlyAuthor",
violentUssageName = "Disallow",
sexualUssageName = "Disallow",
//commercialUssageName = "Disallow",
licenseName = "CC0",
};
var c = new JsonSchemaValidationContext("")
{
EnableDiagnosisForNotRequiredFields = true,
};
var ex = Assert.Throws<JsonSchemaValidationException>(
() => JsonSchema.FromType<glTF_VRM_Meta>().Serialize(model, c)
);
Assert.AreEqual("[commercialUssageName.String] null", ex.Message);
}
{
var model = new glTF_VRM_Meta()
{
allowedUserName = "OnlyAuthor",
violentUssageName = "Disallow",
sexualUssageName = "Disallow",
commercialUssageName = "_INVALID_SOME_THING_",
licenseName = "CC0",
};
var c = new JsonSchemaValidationContext("")
{
EnableDiagnosisForNotRequiredFields = true,
};
var ex = Assert.Throws<JsonSchemaValidationException>(
() => JsonSchema.FromType<glTF_VRM_Meta>().Serialize(model, c)
);
Assert.AreEqual("[commercialUssageName.String] _INVALID_SOME_THING_ is not valid enum", ex.Message);
}
}
// TODO: Move to another suitable location

View File

@ -59,7 +59,7 @@ namespace VRM
public int texture = -1;
#region Ussage Permission
[JsonSchema(Description = "A person who can perform with this avatar ", EnumValues = new object[] {
[JsonSchema(Required = true, Description = "A person who can perform with this avatar ", EnumValues = new object[] {
"OnlyAuthor",
"ExplicitlyLicensedPerson",
"Everyone",
@ -77,7 +77,7 @@ namespace VRM
}
}
[JsonSchema(Description = "Permission to perform violent acts with this avatar", EnumValues = new object[]
[JsonSchema(Required = true, Description = "Permission to perform violent acts with this avatar", EnumValues = new object[]
{
"Disallow",
"Allow",
@ -89,7 +89,7 @@ namespace VRM
set { violentUssageName = value.ToString(); }
}
[JsonSchema(Description = "Permission to perform sexual acts with this avatar", EnumValues = new object[]
[JsonSchema(Required = true, Description = "Permission to perform sexual acts with this avatar", EnumValues = new object[]
{
"Disallow",
"Allow",
@ -101,7 +101,7 @@ namespace VRM
set { sexualUssageName = value.ToString(); }
}
[JsonSchema(Description = "For commercial use", EnumValues = new object[]
[JsonSchema(Required = true, Description = "For commercial use", EnumValues = new object[]
{
"Disallow",
"Allow",
@ -118,7 +118,7 @@ namespace VRM
#endregion
#region Distribution License
[JsonSchema(Description = "License type", EnumValues = new object[]
[JsonSchema(Required = true, Description = "License type", EnumValues = new object[]
{
"Redistribution_Prohibited",
"CC0",